Concat 来自两个具有不同名称的多个列的数据框的行

问题描述 投票:0回答:1

我有两个具有不同列号和行的数据框:

con = pd.DataFrame({'A': range(1000),
                            'B': range(1000),
                            'C': range(1000),
                            'D': range(1000),
                            'E': range(1000),
                            'F': range(1000)})
st = pd.DataFrame({'G': range(100),
                      'H': range(100),
                      'I': range(100),
                      'J': range(100),
                      'K': range(100)})

我想将

con
数据帧(从第二列开始)与
st
数据帧中的
con_st
数据帧连接起来,从
con
中丢弃第一列并从第二列开始附加值。

我试过这段代码:

con = con.iloc[:, 1:]
con_st = pd.concat([con, st], ignore_index=True)

然而,这种方式的结果是添加列。我想问题是不同的列名。有没有办法只根据列索引追加数据?

python pandas dataframe concatenation
1个回答
2
投票

使这个解决方案起作用的两个要求:

  1. 删除第一个数据框“con”中的第一列(您可以使用
    iloc
    和切片,或使用
    drop
    并指定第一列)
  2. 然后您需要重命名第二个数据框“st”的列,以便数据框按列名alignable(参见相关问题)。

完成这些后,您可以致电

pd.concat

res = pd.concat([
    con.iloc[:, 1:], st.set_axis(con.columns[1:1+len(st)], axis=1)]) 
print (res)

     B   C   D   E   F
0    0   0   0   0   0
1    1   1   1   1   1
2    2   2   2   2   2
3    3   3   3   3   3
4    4   4   4   4   4
..  ..  ..  ..  ..  ..
95  95  95  95  95  95
96  96  96  96  96  96
97  97  97  97  97  97
98  98  98  98  98  98
99  99  99  99  99  99

[1100 rows x 5 columns] # success!

设置

ignore_index
对于您的用例来说是不够的,因为它忽略了输入数据帧的索引而不是强制对齐(相当于在结果上调用
reset_index

© www.soinside.com 2019 - 2024. All rights reserved.