我有数据
diff_time
0
124
56
87
40
168
449
13
我应该写一个函数,我可以自动获得 2 个参数a and b
,其中
for el in df['diff_time']:
if el > a:
el = b
else:
el = continue
如何解决此任务?使用scipy.optimize是真的吗?
我认为您可以使用mask
由df.diff_time > a
创建的boolean mask
:
a = 100
b = 33
print (df.diff_time > a)
0 False
1 True
2 False
3 False
4 False
5 True
6 True
7 False
Name: diff_time, dtype: bool
df['b'] = df.diff_time.mask(df.diff_time > a, b)
print (df)
diff_time b
0 0 0
1 124 33
2 56 56
3 87 87
4 40 40
5 168 33
6 449 33
7 13 13
如果需要更改列diff_time
请使用ix
:
df.ix[df['diff_time']>= a ,'diff_time'] = b
print (df)
diff_time
0 0
1 33
2 56
3 87
4 40
5 33
6 33
7 13
a = 100
b = 33
df['diff_time'].apply(lambda el: b if el > a else el)
0 0
1 33
2 56
3 87
4 40
5 33
6 33
7 13
Name: diff_time, dtype: int64