如何用字典值替换Pandas系列

时间:2019-07-29 18:21:59

标签: python pandas dictionary

我想将我的字典值链接到pandas系列对象。我已经尝试过replace方法和map方法仍然没有运气。

根据每个链接: Replace values in pandas Series with dictionary

仍然无法正常工作,我的示例熊猫看起来像:

index                    column
0                      ESL Literacy
1    Civics  Government Team Sports
2      Health  Wellness Team Sports
3              Literacy Mathematics
4                       Mathematics

字典:

{'civics': 6,
 'esl': 5,
 'government': 7,
 'health': 8,
 'literacy': 1,
 'mathematics': 4,
 'sports': 3,
 'team': 2,
 'wellness': 9}

所需的输出:

0 [5,1]
1 [6,7,2,3]
2 [8,9,2,3]
3 [1,4]
4 [4]

任何帮助将不胜感激。谢谢:)

2 个答案:

答案 0 :(得分:6)

有趣的解决方案

s=df.column.str.get_dummies(' ')
s.dot(s.columns.str.lower().map(d).astype(str)+',').str[:-1].str.split(',')
Out[413]: 
0          [5, 1]
1    [6, 7, 3, 2]
2    [8, 3, 2, 9]
3          [1, 4]
4             [4]
dtype: object

或者在熊猫0.25.0中,我们可以使用explode

df.column.str.split().explode().str.lower().map(d).groupby(level=0).agg(list)
Out[420]: 
0          [5, 1]
1    [6, 7, 2, 3]
2    [8, 9, 2, 3]
3          [1, 4]
4             [4]
Name: column, dtype: object

答案 1 :(得分:4)

使用asarraystr.lower和理解力。

str.split

u = df['column'].str.lower().str.split('\s+')

pd.Series([[d.get(word) for word in row] for row in u])