gpt4 book ai didi

python - 以两列为条件并创建第三列失败的 Pandas Python

转载 作者:太空宇宙 更新时间:2023-11-03 12:20:07 25 4
gpt4 key购买 nike

我有以下数据,我想创建一个具有特定条件的新列。请参阅以下内容:
数据集:

real,rel
1,0
0,1
1,1
0,1
0,0
0,0
1,1
1,1
0,0
0,1
1,0
1,1
0,1
1,0

我尝试的代码和我收到的错误:

>>> import pandas as pd
>>> df = pd.read_csv("test.csv")
>>> df.loc[df["real"]==0 and df["rel"]==0,"out"] = 9
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python35\lib\site-packages\pandas\core\generic.py", line 1576, in __nonzero__
.format(self.__class__.__name__))
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

out 列的条件为:
real0rel0时,out应为 0
real1rel1时,out应为 1
real1rel0时,out应为 2
real0rel1时,out应为 3
请让我知道我能做些什么来完成缺失的部分。我检查过这个:Truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()

最佳答案

正在使用 np.select .您可以从定义一组条件开始:

c1 = (df.real == 0) & (df.rel == 0) 
c2 = (df.real == 1) & (df.rel == 1)
c3 = (df.real == 1) & (df.rel == 0)
c4 = (df.real == 0) & (df.rel == 1)

然后可以根据条件的结果在range(4)中选择:

import numpy as np
df['out'] = np.select([c1,c2,c3,c4], range(4))

real rel out
0 1 0 2
1 0 1 3
2 1 1 1
3 0 1 3
4 0 0 0
5 0 0 0
6 1 1 1
7 1 1 1
8 0 0 0
9 0 1 3
10 1 0 2
11 1 1 1
12 0 1 3
13 1 0 2

关于python - 以两列为条件并创建第三列失败的 Pandas Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55123006/

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