【发布时间】:2016-09-19 05:27:48
【问题描述】:
我喜欢将部分字符串从字典键映射到这样的系列:
df = pd.DataFrame(np.random.randint(0,10,size=(5, 1)), columns=list('A'))
df.insert(0, 'n', ['abcde Germany fffe','aaaa Norway bbbb',
'tttt Sweden','Croatia dfdfdf','Italy sfsd'])
>>> df
n A
0 abcde Germany fffe 2
1 aaaa Norway bbbb 1
2 tttt Sweden 4
3 Croatia dfdfdf 1
4 Italy sfsd 2
d = {'Germany':0.5, 'Croatia':1.5, 'Italy':1.5}
现在我喜欢将 d 的键映射到 n 列以匹配部分字符串并设置倍数。我通过一个丑陋的循环实现了这一点:
df['multiple'] = 1
for k, v in d.iteritems():
df['multiple'] = np.where(df['n'].str.contains(k), v, df['multiple'])
>>> df
n A multiple
0 abcde Germany fffe 2 0.5
1 aaaa Norway bbbb 1 1.0
2 tttt Sweden 4 1.0
3 Croatia dfdfdf 1 1.5
4 Italy sfsd 2 1.5
我有更好、更 Pandasly 的方式吗?谢谢!
【问题讨论】: