Python 如何将ffill应用于1?
我有一个如下所示的数据帧Python 如何将ffill应用于1?,python,pandas,Python,Pandas,我有一个如下所示的数据帧 A B C D 0 1 0 0 0 1 0 1 0 0 2 0 1 0 0 3 0 0 1 0 我想把这个转换成这样 A B C D 0 1 0 0 0 1 1 1 0 0 2 1 1 0 0 3 1 1 1 0 到目前为止我试过 df= df.replace('0',np.NaN) df=df.fillna(method='ffill').fillna('0') 我上面的代码
A B C D
0 1 0 0 0
1 0 1 0 0
2 0 1 0 0
3 0 0 1 0
我想把这个转换成这样
A B C D
0 1 0 0 0
1 1 1 0 0
2 1 1 0 0
3 1 1 1 0
到目前为止我试过
df= df.replace('0',np.NaN)
df=df.fillna(method='ffill').fillna('0')
我上面的代码很好用
但我认为还有其他更好的方法来解决这个问题,使用转换为数字的数据,然后替换为:
详细信息:
print (df.astype(int).cumsum())
A B C D
0 1 0 0 0
1 1 1 0 0
2 1 2 0 0
3 1 2 1 0
或者在numpy
中使用相同的原则:
谢谢你的解决方案
print (df.astype(int).cumsum())
A B C D
0 1 0 0 0
1 1 1 0 0
2 1 2 0 0
3 1 2 1 0
arr = df.values.astype(int)
df = pd.DataFrame(np.where(np.cumsum(arr, axis=0) >= 1, '1', '0'),
index=df.index,
columns= df.columns)
print (df)
A B C D
0 1 0 0 0
1 1 1 0 0
2 1 1 0 0
3 1 1 1 0