Python:通过包含来自另外两个的行来创建单个数据帧

The*_*r23 3 python dataframe pandas

假设我有两个形式的熊猫:

>>> df
                A          B          C
first   62.184209  39.414005  60.716563
second  51.508214  94.354199  16.938342
third   36.081861  39.440953  38.088336
>>> df1
               A         B         C
first   0.828069  0.762570  0.717368
second  0.136098  0.991668  0.547499
third   0.120465  0.546807  0.346949
>>>
Run Code Online (Sandbox Code Playgroud)

我生成的:

  import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.random([3, 3])*100,
columns=['A', 'B', 'C'], index=['first', 'second', 'third'])

df1 = pd.DataFrame(np.random.random([3, 3]),
columns=['A', 'B', 'C'], index=['first', 'second', 'third'])
Run Code Online (Sandbox Code Playgroud)

你能找到最聪明,最快捷的方法来获得:

                A          B          C
first   62.184209  39.414005  60.716563
first_s   0.828069  0.762570  0.717368
second  51.508214  94.354199  16.938342
second_s  0.136098  0.991668  0.547499
third   36.081861  39.440953  38.088336
third_s   0.120465  0.546807  0.346949
Run Code Online (Sandbox Code Playgroud)

我想我可以做一个for循环说从第二行的第一行和奇数行中取偶数行,但它对我来说似乎不是很有效.

Max*_*axU 5

试试这个:

In [501]: pd.concat([df, df1.set_index(df1.index + '_s')]).sort_index()
Out[501]:
                  A          B          C
first     62.184209  39.414005  60.716563
first_s    0.828069   0.762570   0.717368
second    51.508214  94.354199  16.938342
second_s   0.136098   0.991668   0.547499
third     36.081861  39.440953  38.088336
third_s    0.120465   0.546807   0.346949
Run Code Online (Sandbox Code Playgroud)