![](/img/trans.png)
[英]Python pandas: concat two DataFrames with different number of rows by duplication
[英]Python Pandas Concat list of Dataframes With Different Columns and Same Rows
我在列表中的 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
有人可以指出我正確的方向嗎?
兩個問題:
axis 0
上連接(應該是axis 1
)。df2
挑出'Value2'
。所以:
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
您可以使用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
這是一種方法。 這種方法的好處是它適用於任意lst
,前提是每個數據幀都有列“A”。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.