gpt4 book ai didi

python - Pandas DataFrame 用最新的前一个正值替换负值

转载 作者:行者123 更新时间:2023-12-03 19:39:58 33 4
gpt4 key购买 nike

考虑一个 DataFrame

df = pd.DataFrame({'a': [1,-2,0,3,-1,2], 
'b': [-1,-2,-5,-7,-1,-1],
'c': [-1,-2,-5,4,5,3]})
对于每一列,如何用最后一个正值或零替换任何负值?此处的最后是指从上到下的每列。注意到的最接近的解决方案是例如 df[df < 0] = 0 .
预期的结果是 DataFrame
df_res = pd.DataFrame({'a': [1,1,0,3,3,2], 
'b': [0,0,0,0,0,0],
'c': [0,0,0,4,5,3]})

最佳答案

您可以使用 DataFrame.mask转换所有值 < 0NaN然后使用 ffillfillna :

df = df.mask(df.lt(0)).ffill().fillna(0).convert_dtypes()
   a  b  c
0 1 0 0
1 1 0 0
2 0 0 0
3 3 0 4
4 3 0 5
5 2 0 3

关于python - Pandas DataFrame 用最新的前一个正值替换负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66383772/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com