将三个类似的Pandas数据集合并,保持原始值



所以我有三个类似的数据集,由下面的行给出:

import pandas as pd
df1 = pd.DataFrame({'Name': ['Michael', 'Samantha', 'Jimmy'], 'Gender': ['M', 'F', 'M'], 'Mon': [0,1,2], 'Tue': [0,3,5], 'Wed': [0,5,3]})
df2 = pd.DataFrame({'Name': ['Michael', 'Samantha', 'Jimmy'], 'Gender': ['M', 'F', 'M'], 'Mon': [1,2,4], 'Tue': [2,3,5], 'Wed': [1,4,5]})
df3 = pd.DataFrame({'Name': ['Michael', 'Samantha', 'Jimmy'], 'Gender': ['M', 'F', 'M'], 'Mon': [5,4,0], 'Tue': [4,6,5], 'Wed': [1,7,6]})

每个数据帧分别显示如下:

>>> df1
Name Gender  Mon  Tue  Wed
0   Michael      M    0    0    0
1  Samantha      F    1    3    5
2     Jimmy      M    2    5    3
>>> df2
Name Gender  Mon  Tue  Wed
0   Michael      M    1    2    1
1  Samantha      F    2    3    4
2     Jimmy      M    4    5    5
>>> df3
df3
Name Gender  Mon  Tue  Wed
0   Michael      M    5    4    1
1  Samantha      F    4    6    7
2     Jimmy      M    0    5    6

有没有办法创建一个将数字组合成一个数据帧的结果数据帧?结果显示为:

Name Gender        Mon     Tue     Wed
0   Michael      M    [0,1,5] [0,2,4] [0,1,1]
1  Samantha      F    [1,2,4] [3,3,6] [5,4,7]
2     Jimmy      M    [2,4,0] [5,5,5] [3,5,6]

必须保持数据的顺序。列表中的第一个项目不一定来自第一个数据集(df1(,但我想始终知道第一个数据集中的数字落在哪里,这样我就可以从组合数据帧中提取特定的值。

让我们先进行concat,然后进行groupby

df = pd.concat([df1,df2,df3]).set_index(['Name','Gender']).groupby(level=[0,1]).agg(list).reset_index()
Out[20]: 
Name Gender        Mon        Tue        Wed
0     Jimmy      M  [2, 4, 0]  [5, 5, 5]  [3, 5, 6]
1   Michael      M  [0, 1, 5]  [0, 2, 4]  [0, 1, 1]
2  Samantha      F  [1, 2, 4]  [3, 3, 6]  [5, 4, 7]

相关内容

  • 没有找到相关文章

最新更新