将Series中的每个元素映射到Series并将结果合并到DataFrame中

时间:2014-02-24 01:48:21

标签: python pandas

例如,假设有一系列

0     'pikachu'
1     'squirtle'

和将口袋妖怪名称映射到由颜色和重量组成的系列的映射。

例如,'皮卡丘'映射到系列

color    'yellow'
weight   5

我想知道如何获得看起来像

的DataFrame
    pokemon    color       weight
0   pikachu    'yellow'    5
1   squirtle   'blue'      8

我能提出的当前解决方案包括许多pd.concat,但我怀疑可能有更清洁的方式。

1 个答案:

答案 0 :(得分:1)

如果您将它们存储为字典:

In [11]: pika
Out[11]: 
color     yellow
weight         5
dtype: object

In [12]: squi
Out[12]: 
color     blue
weight       8
dtype: object

In [13]: pokes = {'pikachu': pika, 'squirtle': squi}

然后你可以使用get方法(取名字并返回Series):

In [14]: pokemon
Out[14]: 
0     pikachu
1    squirtle
dtype: object

In [15]: pokemon.apply(pokes.get)
Out[15]: 
    color  weight
0  yellow       5
1    blue       8

注意:使用_['name'] = pokemon添加名称列。

或者您可以使用from_dict方法:

In [21]: pd.DataFrame.from_dict(pokes, orient='index')
Out[21]: 
           color  weight
pikachu   yellow       5
squirtle    blue       8