【问题标题】:How to merge two data frame by column names python如何按列名python合并两个数据框
【发布时间】:2020-08-16 17:27:31
【问题描述】:

我有两个数据框,一个看起来像这样(形状:12553*83):

    A12D        A131          A12B ...
0   1.096131    2.609943    -0.659828
1   1.111370    2.650422    -0.648742

...

另一个是这样的(形状:1*105)

            A12B        A0CM        A18V...
PAM50 mRNA  Basal-like  Basal-like  Basal-like

我想通过相同的列名内部合并两个表。比如:

            A12D        A131          A12B ...
PAM50 mRNA  Basal-like  Basal-like  Basal-like
1           1.096131    2.609943    -0.659828
2           1.111370    2.650422    -0.648742

由于两个表都很大,所以列名没有完整显示。另一个问题是列名可能重复。我已经搜索了 serval 合并方法,其中大多数只是按列值合并。那么在这种情况下我能做些什么呢?提前致谢!

【问题讨论】:

  • pd.concat([df2, df1]) ?
  • list(df) 会给你所有的列名
  • 感谢您的帮助!我知道如何获取列名,但我不知道如何合并两个表,只有那些列名出现在两个表中。当我尝试“pd.concat([df2, df1])”时,它会返回“计划形状未对齐”。

标签: python dataframe merge


【解决方案1】:

正如@sushanth 所说,使用pd.concat() -- 和join='inner'。这是一个例子:

import pandas as pd
df1 = pd.DataFrame({'a': [1, 2, 3], 
                    'b': [4, 5, 6], 
                    'c': [7, 8, 9]})
df2 = pd.DataFrame({'b': [11, 12, 13], 
                    'c': [14, 15, 16], 
                    'd': [17, 18, 19]})
t = pd.concat([df1, df2], axis=0, join='inner')
print(t)

    b   c
0   4   7
1   5   8
2   6   9
0  11  14
1  12  15
2  13  16

更多信息在这里:

【讨论】:

  • 感谢您的帮助!但是当我在我的数据上尝试这个时,它返回“ValueError:计划形状未对齐”。我想这可能是因为这里有一些重复的列名,所以我尝试了代码“merged = pd.concat([cov1,pro_filled_knn_name],axis="columns")”,但结果都是 NA ......无论如何,谢谢!
  • 找出是否有重复列名的一种方法是df.columns.is_unique -- 您可以使用df.columns.value_counts() 查找重复的名称
【解决方案2】:

好的,问题解决了!感谢大家的热心帮助!我首先删除了重复的列,然后连接了两个表。喜欢

df1 = df1.loc[:,~df1.columns.duplicated()]

merged = pd.concat([df1,df2],join='inner')

【讨论】:

    猜你喜欢
    • 2022-06-20
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    • 1970-01-01
    • 2017-10-31
    相关资源
    最近更新 更多