簡體   English   中英

Python Pandas Concat 具有不同列和相同行的數據幀列表

[英]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

有人可以指出我正確的方向嗎?

兩個問題:

  1. axis 0上連接(應該是axis 1 )。
  2. 有兩個“A”列的副本。 您可以在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.mergepandas.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM