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

时间:2017-04-12 16:25:10

标签: python pandas dataframe

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

>>> 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循环说从第二行中取出偶数行,但对我来说似乎没有效率。

1 个答案:

答案 0 :(得分: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