我有一个包含不同数据帧的列表。我需要将数据帧合并到一起 列名称为一,并将其写入CSV输出或单个数据帧。
我已设法获取列名,但无法想到执行上述操作的良好逻辑 操作
我的情况:
MERGED_LIST有9个数据框元素。列名如下
array(['A','B','C']) - 10 rows
array(['A','B','C']) - 15 rows
array(['W','X','Y','Z']) - 10 rows
array(['W','X','Y','Z']) - 20 rows
array(['W','X','Y','Z']) - 45 rows
array(['W','X','Y','Z']) - 30 rows
array(['W','X','Y','Z']) - 5 rows
array(['H']) - 50 rows
需要最终的支出:
CSV1或DF1:
A B C
有25行
CSV2或DF2:
W X Y Z
有110行
CSV3或DF3:
H
有50行
答案 0 :(得分:0)
不确定这是否是您想要的。这是我的回应。让我知道是否有帮助。如果没有,请提供更多详细信息,以便我们为您提供帮助。
我知道这是一篇过时的文章,但想看看这是否是您想要的。
我还建议您查看我在Pandas Merging 101和Pandas .concat回复中找到的最佳帖子。
import pandas as pd
df1 = pd.DataFrame({'A':['A1']*10,
'B':['B1']*10,
'C':['C1']*10})
df2 = pd.DataFrame({'A':['A2']*15,
'B':['B2']*15,
'C':['C2']*15})
df3 = pd.DataFrame({'W':['W3']*10,
'X':['X3']*10,
'Y':['Y3']*10,
'Z':['Z3']*10})
df4 = pd.DataFrame({'W':['W4']*20,
'X':['X4']*20,
'Y':['Y4']*20,
'Z':['Z4']*20})
df5 = pd.DataFrame({'W':['W5']*45,
'X':['X5']*45,
'Y':['Y5']*45,
'Z':['Z5']*45})
df6 = pd.DataFrame({'W':['W6']*30,
'X':['X6']*30,
'Y':['Y6']*30,
'Z':['Z6']*30})
df7 = pd.DataFrame({'W':['W7']*5,
'X':['X7']*5,
'Y':['Y7']*5,
'Z':['Z7']*5})
dfH = pd.DataFrame({'H':['H8']*50})
dfABC = df1.merge(df2, on=['A','B','C'],how='outer')
dfWXYZ = pd.concat([df3,df4,df5,df6,df7], axis=0,sort=False)
print(dfABC)
print(dfWXYZ)
print(dfH)
输出如下:
dfABC results in 25 rows (10 + 15)
dfWXYZ results in 110 rows (10 + 20 + 45 + 30 + 5)
dfH results in 50 rows