pandas dataframe 列运算符重载

发布于 2022-09-06 00:02:46 字数 431 浏览 10 评论 0

现在有一个dataframe,需要根据A,B,C列计算出DEF列,列是通过运算得到的结果
如1&-1得到的值是1
我需要1&-1或-1&1得到的值是0
求助各位

import pandas as pd

data = [
    [1, 0, 0],
    [1, 1, 1],
    [1, 0, 1],
    [1, 1, 0],
    [0, 1, 0]
]

df = pd.DataFrame(data, columns=['A', 'B', 'C'])

df['D'] = df['A'] & (df['B'] - df['C'])
df['E'] = (df['A'] & df['B']) - df['C']
df['F'] = df['A'] & df['B'] - df['C']

print df

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦萦几度 2022-09-13 00:02:46

我不确定 你的问题是否一定要求运算符重载
如果不是 可以用其他方式解决这个问题

& 代表如果有两个数中有一个是0 则返回0, 否则返回1
现在新的要求是 如果1,-1 也要返回0

x&y 在(0,_),(_,0),(1,-1),(-1,1)的情况下返回0,其他返回1

这是我的想法,如果问题哪里理解有误,请指出

import pandas as pd

data = [
    [1, 0, 0],
    [1, 1, 1],
    [1, 0, 1],
    [1, 1, 0],
    [0, 1, 0]
]

df = pd.DataFrame(data, columns=['A', 'B', 'C'])
df['X'] = df['B'] - df['C']
df['D'] = df['A'] & (df['B'] - df['C'])
df['E'] = (df['A'] & df['B']) - df['C']
df['F'] = df['A'] & df['B'] - df['C']

df['DD'] = fake_overloadding(df['A'],(df['B'] - df['C']))
df['EE'] = fake_overloadding(df['A'], df['B']) - df['C']
df['FF'] = fake_overloadding(df['A'] ,df['B'] - df['C'])

print (df)

def fake_overloadding(x,y):
    return 1-((x==0)|(y==0)|((x+y==0)&(x.abs()==1))).astype(int)
 A  B  C  X  D  E  F  DD  EE  FF
0  1  0  0  0  0  0  0   0   0   0
1  1  1  1  0  0  0  0   0   0   0
2  1  0  1 -1  1 -1  1   0  -1   0
3  1  1  0  1  1  1  1   1   1   1
4  0  1  0  1  0  0  0   0   0   0
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文