繁体   English   中英

Python Pandas - 如何将具有两个不同列的两个数据帧合并到两个列表列

[英]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 数组的矢量化功能。

使用concatgroupby和聚合 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM