我是新手,所以这听起来可能很奇怪,但基本上,我有一个很大的数据框,但为了简化起见,我们假设数据框是这样的:
import pandas as pd
import numpy as np
dfn = pd.DataFrame({'a':[1,2,3,4,5],
'b':[6,7,8,9,10],
'c':np.nan})
dfn
输出:
a b c
0 1 6 NaN
1 2 7 NaN
2 3 8 NaN
3 4 9 NaN
4 5 10 NaN
我想要做的是根据条件填写'c'列中的值,即如果'a'中的相应行值为奇数,则将其添加到相应的行值'b'并输入' c',否则,只需将 'a' 值用于 'c'。
我目前拥有的是这样的:
for row in range(dfn.shape[0]):
if dfn.loc[row]['a']%2!=0:
dfn.loc[row]['c']=dfn.loc[row]['a']+dfn.loc[row]['b']
else:
dfn.loc[row]['c']=dfn.loc[row]['a']
dfn
输出:
a b c
0 1 6 NaN
1 2 7 NaN
2 3 8 NaN
3 4 9 NaN
4 5 10 NaN
这里似乎什么都没有发生,我不完全确定为什么。
我还尝试了另一种方法:
is_odd=dfn[dfn['a']%2!=0]
is_odd['c'] = is_odd['a'] + is+odd['b']
is_odd
在这里,奇怪的是我得到了正确的输出:
a b c
0 1 1 2
2 3 3 6
4 5 5 10
但是当我再次调用 dfn 时,它会显示所有 NaN 值。
我也试过在不使用变量名的情况下这样做,但没有任何反应。
知道我缺少什么或者是否有办法做到这一点?
谢谢!