如何根据多个列对 2 个数据框进行合并和分类

问题描述 投票:0回答:1

你好,我是 Pandas 的新手,所以我不知道最好的选择是什么(或者即使这是可能的)我有以下 2 个数据帧(我接收它们作为参数,所以我不确定它们是如何真的建成了):

___________|_mean_|_std_|_epoch_|
file1      |   0  |  4  |  300  | 
file2      |   2  |  1  |  300  |
file3      |   3  |  2  |  300  |

___________|_mean_|_std_|_epoch_|
file1      |   1  |  4  |  400  | 
file2      |   3  |  5  |  400  |
file3      |   3  |  6  |  400  |

在尝试 Concat 函数时,我只是像这样将两个数据帧统一起来。

___________|_mean_|_std_|_epoch_|
file1      |   0  |  4  |  300  | 
file2      |   2  |  1  |  300  |
file3      |   3  |  2  |  300  |
file1      |   1  |  4  |  400  | 
file2      |   3  |  5  |  400  |
file3      |   3  |  6  |  400  |

合并仅显示列,但不显示值...

我正在寻找这样的东西:

______|_epoch_|_mean_|_std_|
file1 |  300  |   0  |  4  |
      |  400  |   1  |  4  |
file2 |  300  |   2  |  1  |
      |  400  |   3  |  5  |
file3 |  300  |   3  |  2  |
      |  400  |   3  |  6  |

有没有办法进行这种类型的数据帧演示?

谢谢你。

pandas dataframe multi-index
1个回答
0
投票

设置每个数据帧的索引并使用 axis=0 连接?

data1 = {'fileName':['file1', 'file2', 'file3'], 'mean':[0,2,3], 'std':[4,1,2], 'epoch':[300,300,300]}
data2 = {'fileName':['file1', 'file2', 'file3'], 'mean':[1,3,3], 'std':[4,5,6], 'epoch':[400,400,400]}

df1 = pd.DataFrame().from_dict(data1).set_index('fileName')
df2 = pd.DataFrame().from_dict(data2).set_index('fileName')

df = pd.concat([df1, df2], axis=0)

print(df)
          mean  std  epoch
fileName                  
file1        0    4    300
file2        2    1    300
file3        3    2    300
file1        1    4    400
file2        3    5    400
file3        3    6    400

然后你可以用groupby聚合:

df.groupby(['fileName']).size()
fileName
file1    2
file2    2
file3    2
dtype: int64
© www.soinside.com 2019 - 2024. All rights reserved.