Python演示了如何将两个具有两个不同列的数据帧合并到两个列表列中

2024-04-19 00:05:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧

df1型:

key  column_a 
AA   AAB      
AA   AAC      
AB   ABA      
AB   ABK      

df2型:

key  column_b
AA   AAA
AB   ABA
AB   ABK
AC   ACC

我想合并它们,但是列a和列b将成为一个列表

key  column_a       column_b
AA   ['AAB','AAC']  ['AAA']
AB   ['ABA','ABK']  ['ABA','ABK']
AC   NaN            ['ACC']

Tags: 数据key列表abcolumnacaaacc
1条回答
网友
1楼 · 发布于 2024-04-19 00:05:33

如果转换为列表,则会丢失使用连续内存块中的NumPy数组时附带的矢量化功能

具有^{}^{}和聚合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]

最后一个如果需要替换空列表以使用^{}

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]

相关问题 更多 >