我在一個串列中有 17 個資料框dataframes,它們都具有相同的列名和長度,除了描述資料源的第一列。有 7 列描述了資料的日期,對于每一行的每個資料幀來說,這些資料的日期也是相同的。因此,每個資料幀共有 19 列。我想做的是動態連接每個具有相同列名的列,這樣總共有 11 個資料框,其中 24 列 7 描述日期,其他 17 列是共享相同的連接列17 個資料框串列的列名。
以下只是 3 個資料框和預期結果的示例。
df1 = pd.DataFrame(np.array([
['a', 1, 3, 9],
['a', 2, 4, 61],
['a', 3, 24, 9]]),
columns=['name', 'date','attr11', 'attr12'])
df2 = pd.DataFrame(np.array([
['b', 1, 5, 19],
['b', 2, 14, 16],
['b', 3, 4, 9]]),
columns=['name','date', 'attr11', 'attr12'])
df3 = pd.DataFrame(np.array([
['c', 1, 3, 49],
['c', 2, 4, 36],
['c', 3, 14, 9]]),
columns=['name','date' ,'attr11', 'attr12']
結果
dfattr11
[1, 3, 5, 49],
[2, 4, 14, 36],
[3, 24, 4, 9]]),
columns=['date', 'attr11', 'attr11', 'attr11']
dfattr12...
new_dataframes = [dfattr11, dfattr12, ...]
我嘗試使用Pandas Python:連接具有相同列的資料幀作為指導,但似乎解決方案堆疊了與并行相反的列。
我知道如何使用 concat 創建一個新的資料框,但是當嘗試迭代或動態地創建它時會出現挑戰,因為有 17 個資料框,每個資料框有 11 列需要放入它們單獨的 df 中。任何幫助將不勝感激。
uj5u.com熱心網友回復:
IIUC,您可以使用它pandas.concat來生成包含所有資料的大資料框,并使用groupby. 您將獲得一個資料幀字典作為輸出:
dfs = [df1,df2,df3]
out = {k: d.droplevel(0, axis=1) for k,d in
pd.concat({d['name'].iloc[0]: d.set_index('date')
.drop(columns='name')
for d in dfs}, axis=1)
.groupby(level=1, axis=1)
}
輸出:
{'attr11': attr11 attr11 attr11
date
1 3 5 3
2 4 14 4
3 24 4 14,
'attr12': attr12 attr12 attr12
date
1 9 19 49
2 61 16 36
3 9 9 9}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/447963.html
