我有几个 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/