我有一个以下形式的 pandas Dataframe:
A B K S
2012-03-31 NaN NaN NaN 10
2012-04-30 62.74449 15.2 71.64 0
2012-05-31 2029.487 168.8 71.64 0
2012-06-30 170.7191 30.4 71.64 0
我尝试创建一个使用 df['S'][index-1] 值替换 df['S'] 的函数。
例如:
for index,row in df.iterrows:
if index = 1:
pass
else:
df['S'] = min(df['A'] + df['S'][index-1]?? - df['B'], df['K'])
但我不知道如何获取 df['S'][index - 1]
看来您最初的答案非常接近。
以下应该有效:
for index, row in df.iterrows():
if df.loc[index, 'S'] != 0:
df.loc[index, 'S'] = df.loc[str(int(index) - 1), 'S']
本质上,对于除第一个索引(即 0)之外的所有索引,将“S”列中的值更改为其之前行中的值。注意:这假设数据帧具有连续的、有序的索引。
The iterrows()
方法不允许您通过单独调用行来修改值,因此您需要使用df.loc()
识别数据框中的单元格,然后更改其值。
另外值得注意的是index
不是整数,因此使用int()
函数减去 1。这都在str()
函数的最终索引输出是一个字符串,如预期的那样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)