[英]Comparing 2 columns in data-frame Value Error
我有一個數據框df1
,它看起來像:
ID myColA myColB myColC
0 A 1 5 13
1 B -2 6 14
2 C 3 -7 15
3 D 4 8 16
我正在嘗試添加一個新列myColD
,該列由以下結果填充:
myColD = ((myColA > 0 and myColB <0) or (myColA < 0 and myColB > 0)),0,myColA)
其中myColA
中的行值大於 0 且myColB
中的值小於 0,反之亦然返回 0,否則返回myColA
值。
所以我想要的 output 是:
ID myColA myColB myColC myColD
0 A 1 5 13 1
1 B -2 6 14 0
2 C 3 -7 15 0
3 D 4 8 16 4
這是我的代碼:
df1 = pd.DataFrame({'ID': ['A', 'B', 'C', 'D'],
'myColA': [1, -2, 3, 4],
'myColB': [5, 6, -7, 8],
'myColC': [9, 10, 11, 12]},
index=[0, 1, 2, 3])
df1['myColD'] = np.where(((df1.myColA > 0) & (df1.myColB < 0)) or ((df1.myColA < 0) & (df1.myColB > 0)), df1.myColA, 0)
然而,我收到了一個值錯誤:
ValueError:Series 的真值不明確。 使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。
指向這樣的列
import pandas as pd
import numpy as np
df1 = pd.DataFrame({'ID': ['A', 'B', 'C', 'D'],
'myColA': [1, -2, 3, 4],
'myColB': [5, 6, -7, 8],
'myColC': [9, 10, 11, 12]},
index=[0, 1, 2, 3])
df1['myColD'] = np.where(((df1['myColA'] > 0) & (df1['myColB'] < 0)) | ((df1['myColA'] < 0) & (df1['myColB'] > 0)), df1['myColA'], 0)
print(df1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.