[英]Python Pandas - How to merge two dataframes that have two different columns to two list columns
我有两个数据框。
df1:
key column_a
AA AAB
AA AAC
AB ABA
AB ABK
df2:
key column_b
AA AAA
AB ABA
AB ABK
AC ACC
我想合并它们,但 column_a 和 column_b 将成为一个列表。
key column_a column_b
AA ['AAB','AAC'] ['AAA']
AB ['ABA','ABK'] ['ABA','ABK']
AC NaN ['ACC']
如果转换为列表,您将失去使用保存在连续内存块中的 NumPy 数组的矢量化功能。
使用concat
、 groupby
和聚合 lambda 函数的解决方案 - 删除NaN
并创建list
:
df = pd.concat([df1, df2]).groupby('key').agg(lambda x: x.dropna().tolist())
print (df)
column_a column_b
key
AA [AAB, AAC] [AAA]
AB [ABA, ABK] [ABA, ABK]
AC [] [ACC]
最后,如果需要将空列表替换为NaN
使用DataFrame.where
:
df = df.where(df.astype(bool))
print (df)
column_a column_b
key
AA [AAB, AAC] [AAA]
AB [ABA, ABK] [ABA, ABK]
AC NaN [ACC]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.