如何将两列(具有相同值的第一列)插入数据框

时间:2020-01-21 21:07:41

标签: python pandas dataframe

下面是一个简单的示例,解释了我想要什么。我需要将列从第一个数据帧添加到其他数据:

import pandas as pd
df = pd.DataFrame({'Animal': ['Falcon', 'Falcon',
                               'Parrot', 'Parrot'],
                    'Max Speed': [380., 370., 24., 26.]})

outlets = pd.DataFrame(columns = ['mac', 'x'])

outlets = outlets.append({'mac' : 1, 'x' : [*df.Animal]}, ignore_index=True)
outlets

输出为:

   mac       x
0   1   [Falcon, Falcon, Parrot, Parrot]

但是我真正想要的是:

   mac       x
0   1      Falcon
1   1      Falcon
2   1      Parrot
3   1      Parrot

请告诉我我该怎么做...

1 个答案:

答案 0 :(得分:0)

根据附录here的文档,您可以像这样合并两个数据框:

效率较低:

import pandas as pd
df = pd.DataFrame({'Animal': ['Falcon', 'Falcon',
                               'Parrot', 'Parrot'],
                    'Max Speed': [380., 370., 24., 26.]})

outlets = pd.DataFrame(columns = ['mac', 'x'])

for animal in [*df.Animal]:
    outlets = outlets.append({'mac': 1,'x': animal}, ignore_index=True)
print(outlets)

更高效:

import pandas as pd
df = pd.DataFrame({'Animal': ['Falcon', 'Falcon',
                               'Parrot', 'Parrot'],
                    'Max Speed': [380., 370., 24., 26.]})


outlets = pd.concat(
    [pd.DataFrame([[1, animal]], columns=['mac', 'x']) for animal in [*df.Animal]],
    ignore_index=True)
print(outlets)

输出:

Less efficient:
   mac       x
0    1  Falcon
1    1  Falcon
2    1  Parrot
3    1  Parrot

More efficient:
  mac       x
0   1  Falcon
1   1  Falcon
2   1  Parrot
3   1  Parrot