python - 如何根据另一个列值将多个 Panda 的 DataFrame 合并到每个列值的数组中

标签 python pandas dataframe

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

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

  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带有聚合列表:

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列的DataFrame:

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]

关于python - 如何根据另一个列值将多个 Panda 的 DataFrame 合并到每个列值的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69836409/

相关文章:

python - 如何将返回的字典变成一个大列表?

Python BeautifulSoup - 在嵌套的 <div> 和 <ul> 中查找特定的 <li>

python - 查找 pandas DataFrame 值的索引

python - 如何使用 Pandas 计算另一列中每个值在一列中的出现次数?

python - 如何绘制一列平均值的直方图,而 bin 由 Pandas 中的另一列定义

python - 如何总结不同的groupby组合?

python - 在 python 中返回日期时间的毫秒表示

python - 如何将程序的输出重定向到数据框

r - 按计数对 R 中的表进行排序

pandas - 我如何使用替换然后在 Pandas 中创建新行?