我有 2 个数据框。
第一个 “named x”
具有以下格式:
ISBN Age Category Count
20 000649840X Middle Adult 6
21 000649840X Young Adult 16
其中相同的 ISBN 有多行不同的类别。
另一个数据帧“named y”
对于每个 ISBN 值都有一行。我想在最后一个数据帧中为每个类别计数创建两列,最终结果应如下所示:
ISBN Middle Adult Count Young Adult Count
我试过了
y["Young Adult Count"] = x[(x['Age Category'] == 'Young Adult') & (y['ISBN] == x['ISBN])]['Count']
但是没有成功
最佳答案
我认为你需要pivot_table
与 join
(默认左连接,因此如果缺少某些ISBN
,则会得到NaN
行)另一个DataFrame
:
print (df1)
ISBN Age Category Count
0 000649840X Middle Adult 6
1 000649840X Young Adult 16
print (df2)
ISBN
0 000649840X
1 0001111111
df3 = df1.pivot_table(index='ISBN',
columns='Age Category',
values='Count',
aggfunc='sum')
df = df2.join(df3.add_suffix(' Count'), on='ISBN')
print (df)
ISBN Middle Adult Count Young Adult Count
0 000649840X 6.0 16.0
1 0001111111 NaN NaN
对于内部联接,请使用参数how='inner'
:
df = df2.join(df3.add_suffix(' Count'), on='ISBN', how='inner')
print (df)
ISBN Middle Adult Count Young Adult Count
0 000649840X 6 16
关于python - 根据列值比较 pandas 中的 2 个数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48247716/