【发布时间】:2020-10-12 17:48:18
【问题描述】:
我有一个 pandas 数据框,我想添加一列并根据某些条件设置某些值。
初始化
看我下面的例子:
import numpy as np
import pandas as pd
df=pd.DataFrame(np.reshape(np.arange(20),(5,4)).tolist(),columns=list('ABCD'))
df['E']=''
df.loc[0,'E']=1
df
直到这里,一切都如愿以偿。输出:
A B C D E
0 0 1 2 3 1
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15
4 16 17 18 19
问题
但是现在,我想将'B'值大于8的第一行中'E'列的值设置为3(与df.loc[2,'E']=1相同,但使用该条件。我不'不知道它是先验的哪一行)。
解决方案尝试
我尝试了不同的方法:
df.loc[df['B']>8,'E'].iloc[0]=3
df
这不会改变任何值:
A B C D E
0 0 1 2 3 1
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15
4 16 17 18 19
同样适用
df.loc[df['B']>8]['E'].iloc[0]=3
我尝试过的其他事情会导致错误。 df.loc[df['B']>8,'E']=3 效果很好,但我只想在满足条件的第一行中分配值,而不是在所有行中。
那么我该如何实现呢?
【问题讨论】:
标签: python pandas dataframe indexing variable-assignment