基于Python中的规则创建dataframe的新列
我有一个CSV文件,我正在努力解决我的熊猫问题。我用纯Python解决了这个问题,但我不能用Pandas 我的CSV文件有5列。我想使用其中一个的数据创建一个新的。该列的内容是基于Python中的规则创建dataframe的新列,python,pandas,Python,Pandas,我有一个CSV文件,我正在努力解决我的熊猫问题。我用纯Python解决了这个问题,但我不能用Pandas 我的CSV文件有5列。我想使用其中一个的数据创建一个新的。该列的内容是[0,1,2,3,4,5]。因此,基于该值,我想执行以下操作: if value == 0: cost_new_column = 0 elif value == 1: cost_new_column = 1000 elif value == 2: cost_new_column = 2500 ... 在
[0,1,2,3,4,5]
。因此,基于该值,我想执行以下操作:
if value == 0:
cost_new_column = 0
elif value == 1:
cost_new_column = 1000
elif value == 2:
cost_new_column = 2500
...
在纯Python中使用
for
和if
来实现这一点很简单。如何在Pandas中执行此操作?我将构建一个目录
,说明如何映射值并调用列,例如:
In [95]:
df = pd.DataFrame({'a':np.random.randint(0, 6, 20)})
df
Out[95]:
a
0 5
1 3
2 3
3 5
4 5
5 4
6 0
7 5
8 1
9 0
10 5
11 2
12 4
13 5
14 2
15 5
16 0
17 5
18 4
19 4
In [96]:
d = dict(zip(range(6), [0,1000,2500,4000,5000,8000]))
d
Out[96]:
{0: 0, 1: 1000, 2: 2500, 3: 4000, 4: 5000, 5: 8000}
In [98]:
df['new_col'] = df['a'].map(d)
df
Out[98]:
a new_col
0 5 8000
1 3 4000
2 3 4000
3 5 8000
4 5 8000
5 4 5000
6 0 0
7 5 8000
8 1 1000
9 0 0
10 5 8000
11 2 2500
12 4 5000
13 5 8000
14 2 2500
15 5 8000
16 0 0
17 5 8000
18 4 5000
19 4 5000
谢谢这很有效。仍在学习熊猫:)由于SE限制,我将在9分钟内接受你的答案。如果条件不准确,你会怎么做,但看起来是:if value<-10
,if-10,我会使用pd.cut
或使用几个loc
语句或np.where
sonp.where(值<-10,一些值,np。其中((值>=10)和(值<10),其他值,第三个值)
其中值
是df中的某一列