我是python的新手,我想知道为什么我的函数不起作用。任何指导,为什么它不工作,以及如何修复将非常感谢。
这是我开始使用的df:
import pandas as pd
df= pd.DataFrame({'A': [0, 1, 2, 3, 4],
'B': [0, 6, 7, 8, 9],
'C': [1, 2, 3, 4, 5],
'D': ['a', 'b', 'c', 'd', 'e'],
'E': ['f', 1, 2, 'd', 'e']})
df
我只想为这个函数计算列A-C。如果列A-C中的任何一行>3,我想向该列添加3,并将二进制标志列更改为1。下面是我创建的函数:
def two_chng(self):
cols=['A','B','C']
df['NEW_BINARY']=0
for i in range(len(cols)):
if (df[cols[i]]>3).any:
df[cols[i]]= df[cols[i]]+3
df['NEW_BINARY']=1
df[cols].apply(two_chng)
df
我希望我的结果数据看起来像这样:我不明白第一行的每一列都加了9,随后的列又把第一行的值加到了自己身上。
res= pd.DataFrame({'A': [0, 1, 2, 6, 7],
'B': [0, 9, 10, 11, 12],
'C': [1, 2, 3, 7, 8],
'D': ['a', 'b', 'c', 'd', 'e'],
'E': ['f', 1, 2, 'd', 'e'],
'NEW_BINARY': [0, 1, 1, 1, 1]})
res
2条答案
按热度按时间t98cgbkg1#
这很简单:
输出量:
wtlkbnrh2#
我会使用布尔掩码:
输出量: