dan*_*che 3 python dataframe pandas
例如,我有DataFrame A如下
A
0
1
2
Run Code Online (Sandbox Code Playgroud)
现在我想在每2行插入DataFrame B到A每1行B是如下
B
3
3
4
4
5
5
Run Code Online (Sandbox Code Playgroud)
最后我想要
A
0
3
3
1
4
4
2
5
5
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
一种选择是获取每个数据帧的值,重新整形,连接,np.hstack然后分配给新的数据帧.
In [533]: pd.DataFrame(np.hstack((df1.A.values.reshape(-1, 1),\
df2.B.values.reshape(-1, 2))).reshape(-1, ),\
columns=['A'])
Out[533]:
A
0 0
1 3
2 3
3 1
4 4
5 4
6 2
7 5
8 5
Run Code Online (Sandbox Code Playgroud)
另一种解决方案:pd.concat和df.stack:
In [622]: pd.DataFrame(pd.concat([df1.A, pd.DataFrame(df2.B.values.reshape(-1, 2))], axis=1)\
.stack().reset_index(drop=True),\
columns=['A'])
Out[622]:
A
0 0
1 3
2 3
3 1
4 4
5 4
6 2
7 5
8 5
Run Code Online (Sandbox Code Playgroud)