我在列表中的Pandas中有两个或更多数据帧
A Value1
1 ABC
2 HYT
3 IUF
A Value2
1 IJT
2 GFH
3 QER
使用时
df = pd.concat(dfs, axis = 0)
写入CSV后,最终输出就像这样
A Value1 Value2
1 ABC
1 IJT
2 HYT
2 GFH
3 IUF
3 QER
但我希望它像这样
A Value1 Value2
1 ABC IJT
2 HYT GFH
3 IUF QER
有人能指出我正确的方向吗?
答案 0 :(得分:1)
两个问题:
axis 0
(应为axis 1
)。'Value2'
中单挑df2
。所以:
df1, df2 = dfs
pd.concat((df1, df2['Value2']), axis=1)
返回
A Value1 Value2
0 1 ABC IJT
1 2 HYT GFH
2 3 IUF QER
答案 1 :(得分:0)
您可以使用pandas.merge
或pandas.concat
import pandas as pd
df1 = pd.DataFrame({"A": [1, 2, 3],
"Value1": ['ABC', 'HYT', 'IUF']})
df2 = pd.DataFrame({"A": [1, 2, 3],
"Value2": ['IJT', 'GFH', 'QER']})
df_merge= pd.merge(df1, df2, how='left', on=["A"])
df_concat = pd.concat([df1, df2['Value2']], axis = 1)
print(df_merge)
print(df_concat)
pandas.merge
的预期输出:
A Value1 Value2
0 1 ABC IJT
1 2 HYT GFH
2 3 IUF QER
pandas.concat
的预期输出:
A Value1 Value2
0 1 ABC IJT
1 2 HYT GFH
2 3 IUF QER
答案 2 :(得分:0)
这是一种方法。如果每个数据框都有“A”列,则此方法的好处是适用于任意lst
。
lst = [df1, df2]
df = pd.concat([i.set_index('A') for i in lst], axis=1).reset_index()
# A Value1 Value2
# 0 1 ABC IJT
# 1 2 HYT GFH
# 2 3 IUF QER