我有两个具有不同列号和行的数据框:
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)
然而,这种方式的结果是添加列。我想问题是不同的列名。有没有办法只根据列索引追加数据?
使这个解决方案起作用的两个要求:
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
)