我有各种看起来像这样的数据框:
df1
ID Number Score Time Result
a 45 0.3 2535 0.9
b 46 0.5 345 0.8
c 34 0.94 346 0.6
d 36 1 356 0.7
df2
ID Image Video
a 0 0
b 0 0
c 1 0
d 0 1
e 1 0
f 1 0
df3
ID Length
a 35
b 57
c 75
d 57
e 85
f 48
我怎样才能将它们合并成这样:
ID Time Image Video Length Score
a 2535 0 0 35 0.3
b 345 0 0 57 0.5
c 346 1 0 75 0.94
d 356 0 1 57 1
我的想法是使用 pd.merge
(on="ID"
)(这只会给我从 a 到 d 的行,对吗?)然后删除不必要的列。但是最后我如何移动 Score 呢?还有其他方法吗?
答案 0 :(得分:1)
链接多个 merge
,然后将 Score
设置为最后一列:
df = df1.merge(df2, on='ID').merge(df3, on='ID')
df['Score'] = df.pop('Score')
或者如果有 list of DataFrames
使用:
from functools import reduce
dfs = [df1, df2, df3]
df = reduce(lambda df1,df2: pd.merge(df1,df2,on='ID'), dfs)
cols = df.columns.drop(['Score']).tolist() + ['Score']
df = df[cols]