假设我有两只这样的熊猫:

>>> 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
>>>

我创造了:
  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'])

你能找到最聪明、最快捷的方法来得到类似的东西吗:
                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

是吗?
我想我可以用一个for循环的说法:从第一行取偶数行,从第二行取奇数行,但这对我来说似乎不是很有效。

最佳答案

试试这个:

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

10-06 00:02