如何连接长度不均匀且没有索引的2个数据帧
y=[152,176,160,192,220,272,256,280,300,280,312,328]
df= pd.DataFrame({'a':y})
z=[np.nan, np.nan,176.,195.84, 217.8816, 241.242, 272.1758,
292.7523, 313.2483, 332.8503, 341.3608, 352.8076, 363.6765, 360.4414,
379.522]
df2=pd.DataFrame({'b':z})
我希望输出为
b a
0 NaN 152
1 NaN 176
2 176.0000 160
3 195.8400 192
4 217.8816 220
5 241.2420 272
6 272.1758 256
7 292.7523 280
8 313.2483 300
9 332.8503 280
10 341.3608 312
11 352.8076 328
12 363.6765
13 360.4414
14 379.5220
[15 rows x 2 columns]
答案 0 :(得分:2)
每个pandas DataFrame都有一个索引,即使您没有明确指定它。在这种情况下,索引由0到n的整数组成:
>>> df.index
Int64Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], dtype=int64)
因此,如果DataFrame的顺序正确,您只需使用concat
即可:
pd.concat([df2, df], axis=1)
返回:
b a
0 NaN 152
1 NaN 176
2 176.0000 160
3 195.8400 192
4 217.8816 220
5 241.2420 272
6 272.1758 256
7 292.7523 280
8 313.2483 300
9 332.8503 280
10 341.3608 312
11 352.8076 328
12 363.6765 NaN
13 360.4414 NaN
14 379.5220 NaN
答案 1 :(得分:1)
我认为首先制作单独的DataFrame没有任何好处。我无法想到在一行中做到这一点的方法,但你可以在两个方面做到这一点:
In [64]: df = DataFrame([y, z]).T
In [65]: df.columns = ['a', 'b']
In [66]: df
Out[66]:
a b
0 152 NaN
1 176 NaN
2 160 176.0000
3 192 195.8400
4 220 217.8816
5 272 241.2420
6 256 272.1758
7 280 292.7523
8 300 313.2483
9 280 332.8503
10 312 341.3608
11 328 352.8076
12 NaN 363.6765
13 NaN 360.4414
14 NaN 379.5220
[15 rows x 2 columns]