我有一只熊猫df:
a b c
0 'k' 2 4
1 'l' 3 7
2 'm' 0 -3
3 'n' 4 4
Run Code Online (Sandbox Code Playgroud)
我有一个词:{'k':'kilo','l':'lima','m':'mike','n':'november'}
如何在我的df中创建一个新列,从dict中的那些键:
a b c new
0 'k' 2 4 'kilo'
1 'l' 3 7 'lima'
2 'm' 0 -3 'mike'
3 'n' 4 4 'november'
Run Code Online (Sandbox Code Playgroud)
谢谢.
只需调用map并传递dict,这将根据dict中的值执行系列值的查找,这是矢量化的,并且比在循环中执行此操作要快得多:
In [26]:
t = {'k': 'kilo', 'l': 'lima', 'm': 'mike', 'n': 'november'}
df['new'] = df['a'].map(t)
df
Out[26]:
a b c new
0 k 2 4 kilo
1 l 3 7 lima
2 m 0 -3 mike
3 n 4 4 november
Run Code Online (Sandbox Code Playgroud)
我注意到在您的数据中,您的数据周围有引号,在这种情况下,上述操作无效,因为您的dict键只是一个字符,因此您需要为键指定带有引号的dict:
In [28]:
t = {"'k'": 'kilo', "'l'": 'lima', "'m'": 'mike', "'n'": 'november'}
df['new'] = df['a'].map(t)
df
Out[28]:
a b c new
0 'k' 2 4 kilo
1 'l' 3 7 lima
2 'm' 0 -3 mike
3 'n' 4 4 november
Run Code Online (Sandbox Code Playgroud)
但是,如果没有必要,我会删除引号:
In [30]:
df['a'] = df['a'].str.replace("'", '')
df['a']
Out[30]:
0 k
1 l
2 m
3 n
Name: a, dtype: object
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
107 次 |
| 最近记录: |