我对pd.concat()的以下行为感到困惑。
有关可重现的示例:
print(dff1)
R1 R2 R3 R4 R5 R6 R7 \
0 0.471973 0.520696 0.002054 0.003792 0.468673 0.689152 0.832767
1 0.692504 0.681589 0.006030 0.018702 0.329242 0.493711 0.510571
2 0.456881 0.554278 0.003793 0.003721 0.539799 0.630306 0.649009
3 0.622189 0.597208 0.001313 0.001932 0.242561 0.529820 0.467826
4 0.605414 0.678142 0.041302 0.037944 0.386975 0.856687 0.419201
R8
0 0.155941
1 0.863021
2 0.790688
3 0.872659
4 0.037814
print(dff2)
Id
22275 29668
11689 15503
54894 73108
19839 26429
55252 73574
dff3 = pd.concat([dff1, dff2], axis = 1, ignore_index = True)
print(dff3)
0 1 2 3 4 5 6 \
0 0.471973 0.520696 0.002054 0.003792 0.468673 0.689152 0.832767
1 0.692504 0.681589 0.006030 0.018702 0.329242 0.493711 0.510571
2 0.456881 0.554278 0.003793 0.003721 0.539799 0.630306 0.649009
3 0.622189 0.597208 0.001313 0.001932 0.242561 0.529820 0.467826
4 0.605414 0.678142 0.041302 0.037944 0.386975 0.856687 0.419201
11689 NaN NaN NaN NaN NaN NaN NaN
19839 NaN NaN NaN NaN NaN NaN NaN
22275 NaN NaN NaN NaN NaN NaN NaN
54894 NaN NaN NaN NaN NaN NaN NaN
55252 NaN NaN NaN NaN NaN NaN NaN
7 8
0 0.155941 NaN
1 0.863021 NaN
2 0.790688 NaN
3 0.872659 NaN
4 0.037814 NaN
11689 NaN 15503.0
19839 NaN 26429.0
22275 NaN 29668.0
54894 NaN 73108.0
55252 NaN 73574.0
因此,似乎ignore_index参数被忽略了,但我不明白为什么。
您的建议将不胜感激。
答案 0 :(得分:0)
否,您需要reset_index
和drop=True
作为输入DataFrames
的默认索引:
dff3 = pd.concat([dff1.reset_index(drop=True),
dff2.reset_index(drop=True)], axis = 1, ignore_index = True)
参数ignore_index
用于输出axis=1
的列的默认索引(如果axis=0
或索引的索引,如果DataFrame
。
但是另一个轴,axis=1
的索引是对齐的,因此您会得到NaN。如果使用axis=0
,则会有对齐的列。
示例:
dff3 = pd.concat([dff1.reset_index(drop=True),
dff2.reset_index(drop=True)], axis = 1, ignore_index = True)
print (dff3)
0 1 2 3 4 5 6 \
0 0.471973 0.520696 0.002054 0.003792 0.468673 0.689152 0.832767
1 0.692504 0.681589 0.006030 0.018702 0.329242 0.493711 0.510571
2 0.456881 0.554278 0.003793 0.003721 0.539799 0.630306 0.649009
3 0.622189 0.597208 0.001313 0.001932 0.242561 0.529820 0.467826
4 0.605414 0.678142 0.041302 0.037944 0.386975 0.856687 0.419201
7 8
0 0.155941 29668
1 0.863021 15503
2 0.790688 73108
3 0.872659 26429
4 0.037814 73574
如果省略参数ignore_index = True
:
dff3 = pd.concat([dff1.reset_index(drop=True),
dff2.reset_index(drop=True)], axis = 1)
print (dff3)
R1 R2 R3 R4 R5 R6 R7 \
0 0.471973 0.520696 0.002054 0.003792 0.468673 0.689152 0.832767
1 0.692504 0.681589 0.006030 0.018702 0.329242 0.493711 0.510571
2 0.456881 0.554278 0.003793 0.003721 0.539799 0.630306 0.649009
3 0.622189 0.597208 0.001313 0.001932 0.242561 0.529820 0.467826
4 0.605414 0.678142 0.041302 0.037944 0.386975 0.856687 0.419201
R8 Id
0 0.155941 29668
1 0.863021 15503
2 0.790688 73108
3 0.872659 26429
4 0.037814 73574
如果concat
中的index
(axis=0
是默认参数,则被忽略):
dff3 = pd.concat([dff1, dff2], ignore_index = True)
print (dff3)
Id R1 R2 R3 R4 R5 R6 \
0 NaN 0.471973 0.520696 0.002054 0.003792 0.468673 0.689152
1 NaN 0.692504 0.681589 0.006030 0.018702 0.329242 0.493711
2 NaN 0.456881 0.554278 0.003793 0.003721 0.539799 0.630306
3 NaN 0.622189 0.597208 0.001313 0.001932 0.242561 0.529820
4 NaN 0.605414 0.678142 0.041302 0.037944 0.386975 0.856687
5 29668.0 NaN NaN NaN NaN NaN NaN
6 15503.0 NaN NaN NaN NaN NaN NaN
7 73108.0 NaN NaN NaN NaN NaN NaN
8 26429.0 NaN NaN NaN NaN NaN NaN
9 73574.0 NaN NaN NaN NaN NaN NaN
R7 R8
0 0.832767 0.155941
1 0.510571 0.863021
2 0.649009 0.790688
3 0.467826 0.872659
4 0.419201 0.037814
5 NaN NaN
6 NaN NaN
7 NaN NaN
8 NaN NaN
9 NaN NaN
按列对齐,索引不变,因为没有参数ignore_index = True
:
dff3 = pd.concat([dff1, dff2])
print (dff3)
Id R1 R2 R3 R4 R5 R6 \
0 NaN 0.471973 0.520696 0.002054 0.003792 0.468673 0.689152
1 NaN 0.692504 0.681589 0.006030 0.018702 0.329242 0.493711
2 NaN 0.456881 0.554278 0.003793 0.003721 0.539799 0.630306
3 NaN 0.622189 0.597208 0.001313 0.001932 0.242561 0.529820
4 NaN 0.605414 0.678142 0.041302 0.037944 0.386975 0.856687
22275 29668.0 NaN NaN NaN NaN NaN NaN
11689 15503.0 NaN NaN NaN NaN NaN NaN
54894 73108.0 NaN NaN NaN NaN NaN NaN
19839 26429.0 NaN NaN NaN NaN NaN NaN
55252 73574.0 NaN NaN NaN NaN NaN NaN
R7 R8
0 0.832767 0.155941
1 0.510571 0.863021
2 0.649009 0.790688
3 0.467826 0.872659
4 0.419201 0.037814
22275 NaN NaN
11689 NaN NaN
54894 NaN NaN
19839 NaN NaN
55252 NaN NaN