繁体   English   中英

如何根据另一列值将多个 Panda 的 DataFrame 合并为每个列值的数组

[英]How to Merge Multiple Panda's DataFrames into an Array for each Column Value Based on Another Column Value

我有几个 Panda 的数据框想要合并在一起。 当我合并它们时,我希望具有相同列的值成为一组值。

例如,如果两个数据框在指定列中具有相同的值,我想将它们合并在一起。 当它们合并时,数据变成一个值数组。

  df1 = 
        A   Value
    0   x   0
    1   y   0


  df2 = 
        A   Value
    0   x   1
    1   y   1
    2   z   1


  After Combining:
  df =
        A   Number_Value 
    0   x   [0, 1]       
    1   y   [0, 1]       
    2   z   [, 1]

我不相信merge()concat()调用是合适的。 我认为调用 .to_numpy() 可以做到这一点,如果我要将每一行中的每个值转换为一个数组,但这似乎不起作用。

concat与聚合list一起使用:

df = pd.concat([df1, df2]).groupby('A', as_index=False).agg(list)
print (df)
   A   Value
0  x  [0, 1]
1  y  [0, 1]
2  z     [1]

没有A列的测试数据帧:

L = [df1, df2]
print ([x for x in L if 'A' not in x.columns])

编辑:对于为空值添加''将其添加到fill_value参数:

L = [df1, df2]

df = pd.concat(L, keys=range(len(L))).reset_index(level=1, drop=True).set_index('A', append=True)
mux = pd.MultiIndex.from_product(df.index.levels)
df = df.reindex(mux, fill_value='').groupby('A').agg(list).reset_index()

print (df)

   A   Value
0  x  [0, 1]
1  y  [0, 1]
2  z   [, 1]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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