python – 在Pandas DataFrame列中替换n个连续值

python – 在Pandas DataFrame列中替换n个连续值,第1张

概述假设我有以下DataFrame df df = pd.DataFrame({"a" : [1,2,2,2,2,2,2,2,2,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5], "b" : [3,3,3,3,3,3,3,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,7,7], "c" : [4,4,4,4,4 假设我有以下DataFrame df

df = pd.DataFrame({"a" : [1,2,3,4,5,5],"b" : [3,6,7,7],"c" : [4,1,3]})

而且我希望替换连续重复10次以上任意列(可能有数百列)的4号,其中10 4个,其余5个.

因此,例如,12个连续4个将被替换为10个4和2个5.

我如何用熊猫实现这一目标?

我想应用一个lambda,但我不知道如何回顾足够的行,它必须从最后开始并向前移动,否则会破坏值的序列.每次查找都必须查看前面的10行,看它们是否都等于4,如果是,则将当前值设置为5.

不知道如何去做!

解决方法 您可以使用:

#column a is changed for 2 groups of 4df = pd.DataFrame({"a" : [4,3]})

如果由where创建NaN,则解决方案将连续4次重置为计数,然后在mask之前将布尔掩码应用于原始df以替换4到5:

a = df == 4mask = a.cumsum()-a.cumsum().where(~a).ffill().fillna(0) > 10df1 = df.mask(mask,5)
print (df1)    a  b  c0   4  3  41   4  3  42   4  3  43   4  3  44   4  3  45   4  3  46   4  3  47   4  4  48   4  4  49   4  4  410  5  4  511  5  5  512  5  5  513  5  5  514  7  5  515  4  5  516  4  5  517  4  5  518  4  5  519  4  5  520  4  5  521  4  5  122  4  5  223  4  5  224  4  5  225  5  5  226  5  5  227  5  5  228  5  6  229  5  6  230  5  7  331  5  7  3

为了更好地检查值,可以使用concat:

print (pd.concat([df,df1],axis=1,keys=['orig','new']))   orig       new            a  b  c   a  b  c0     4  3  4   4  3  41     4  3  4   4  3  42     4  3  4   4  3  43     4  3  4   4  3  44     4  3  4   4  3  45     4  3  4   4  3  46     4  3  4   4  3  47     4  4  4   4  4  48     4  4  4   4  4  49     4  4  4   4  4  410    4  4  4   5  4  511    4  5  4   5  5  512    4  5  4   5  5  513    4  5  4   5  5  514    7  5  4   7  5  515    4  5  4   4  5  516    4  5  4   4  5  517    4  5  4   4  5  518    4  5  5   4  5  519    4  5  5   4  5  520    4  5  5   4  5  521    4  5  1   4  5  122    4  5  2   4  5  223    4  5  2   4  5  224    4  5  2   4  5  225    4  5  2   5  5  226    4  5  2   5  5  227    4  5  2   5  5  228    4  6  2   5  6  229    5  6  2   5  6  230    5  7  3   5  7  331    5  7  3   5  7  3
总结

以上是内存溢出为你收集整理的python – 在Pandas DataFrame列中替换n个连续值全部内容,希望文章能够帮你解决python – 在Pandas DataFrame列中替换n个连续值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1193881.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存