gpt4 book ai didi

python - 如何向由条件语句形成的表添加新列?

转载 作者:行者123 更新时间:2023-11-30 22:42:52 27 4
gpt4 key购买 nike

我有一个非常简单的查询。

我有一个如下所示的 csv:

ID X Y
1 10 3
2 20 23
3 21 34

我想添加一个名为 Z 的新列,如果 X 等于或大于 Y,则该列等于 1,否则等于 0。

到目前为止我的代码是:

import pandas as pd

data = pd.read_csv("XYZ.csv")
for x in data["X"]:
if x >= data["Y"]:
Data["Z"] = 1
else:
Data["Z"] = 0

最佳答案

您可以在不使用循环的情况下使用 ge 来完成此操作这意味着大于或等于,并使用 astype 将 bool 数组转换为 int :

In [119]:
df['Z'] = (df['X'].ge(df['Y'])).astype(int)
df

Out[119]:
ID X Y Z
0 1 10 3 1
1 2 20 23 0
2 3 21 34 0

关于您的尝试:

for x in data["X"]:
if x >= data["Y"]:
Data["Z"] = 1
else:
Data["Z"] = 0

这是行不通的,首先你使用的是Data而不是data,即使修复了这个问题,你也会将标量与数组进行比较,所以这会引发警告,因为将标量与数组进行比较是不明确的,第三,您要分配整个列,因此会覆盖该列。

您需要访问您的循环无法访问的索引标签,您可以使用 iteritems为此:

In [125]:
for idx, x in df["X"].iteritems():
if x >= df['Y'].loc[idx]:
df.loc[idx, 'Z'] = 1
else:
df.loc[idx, 'Z'] = 0
df

Out[125]:
ID X Y Z
0 1 10 3 1
1 2 20 23 0
2 3 21 34 0

但实际上这是不必要的,因为这里有一个矢量化方法

关于python - 如何向由条件语句形成的表添加新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41980944/

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