【问题标题】:pandas iterrows overwriting valuespandas iterrows 覆盖值
【发布时间】:2019-04-14 13:32:00
【问题描述】:

我尝试使用 iterrows 作为命令来处理框架。

stocks2['Startpoint']=0
for index,row in stocks2.iterrows():
    if row['VOL']>4*row['avg'] and row['RET']< -0.02 :
        row['Startpoint']=1

我知道条件多次满足,但在那种情况下它似乎没有成功覆盖该值。

stocks2['Startpoint'].value_counts()

输出[141]: 0 1588603 名称:起点,数据类型:int64

【问题讨论】:

  • 因为 .iterows 在代表数据框行的 pd.Series 对象上返回一个迭代器,但是改变这些 pd.Series 对象不会影响原始 pd.DataFrame

标签: pandas loops dataframe iteration


【解决方案1】:

不需要循环,你可以用

stocks2['Startpoint']=((stocks2['VOL']>4*stocks2['ave'])&(stocks2['RET']<0.2)).astype(int)

【讨论】:

    猜你喜欢
    • 2014-06-02
    • 2015-11-30
    • 2014-10-17
    • 2017-07-15
    • 2017-03-15
    • 1970-01-01
    • 2016-11-20
    • 1970-01-01
    • 2022-12-22
    相关资源
    最近更新 更多