我有幾個 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()orconcat()呼叫是合適的。我認為呼叫 .to_numpy() 可以做到這一點,如果我要將每一行中的每個值轉換為一個陣列,但這似乎不起作用。
uj5u.com熱心網友回復:
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]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/347561.html
上一篇:PythonTypeError:“SeriesGroupBy”和“SeriesGroupBy”的實體之間不支持“>”
