python - 循环熊猫数据框的每一行
问题描述
我有一个大数据框,如果满足某个条件,我想将同一行的值除以彼此,并为每个条件创建一个新列。
我尝试了各种循环,但我得到的错误是一个系列的真值是模棱两可的。我认为我接近解决方案,但我无法弄清楚最快的方法。
df = pd.DataFrame({'colA': np.random.randn(20), 'colB': np.random.randn(20), 'colC': np.random.randn(20)})
print(df)
x = 0
y = 0.5
for ix, r in df.iterrows():
if (r['colA'] > x) & (r['colA'] < y):
df.loc[ix,str(y)] = df.loc[ix,'colA']/df.loc[ix,'colB']
x += 0.5
y += 0.5
这就是我现在的进展。有问题的是,在满足条件的每一行之后,x 和 y 都会增加。但是我需要对满足条件的所有行进行除法,然后增加 x 和 y。
解决方案
如果要将除法应用于满足条件的所有行,则不应使用 iterrows。这是您的初始代码的固定版本:
while x <= df['colA'].max():
sub = df.loc[(df['colA'] > x)&(df['colA'] < y)] # filter the dataframe on both conditions
df.loc[sub.index, str(y)] = df['colA']/df['colB']
x += .5
y += .5
推荐阅读
- javascript - 没有在firebase中获得令牌
- javascript - 为什么高度不是由javascript设置的?
- android - 使用 livedata 进行 Android 视图模型单元测试
- symfony - 路由 symfony 中的多个可选参数
- python - python`wave`:AttributeError:'NoneType'对象在Python中没有属性'write'
- react-native - 在 react-native 0.59.10 中使用 react-navigation
- sql - 如何在mybatis mapper的同一个select中提取一个pojo和一个动态图?
- c++ - stl 函数和函数类型 vs 函数指针类型
- amazon-web-services - 在 AWS SAM 模板中创建 RDS 完全访问角色
- javascript - 页面加载上的活动类未触发