我正在使用具有如下结构的数据框:
In[75]: df.head(2)
Out[75]:
statusdata participant_id association latency response \
0 complete CLIENT-TEST-1476362617727 seeya 715 dislike
1 complete CLIENT-TEST-1476362617727 welome 800 like
stimuli elementdata statusmetadata demo$gender demo$question2 \
0 Sample B semi_imp complete male 23
1 Sample C semi_imp complete female 23
Run Code Online (Sandbox Code Playgroud)
我希望能够对column运行查询字符串demo$gender。
即
df.query("demo$gender=='male'")
Run Code Online (Sandbox Code Playgroud)
但这有一个$标志问题。如果我$用另一个定界符(如-)替换符号,则问题仍然存在。我可以修复我的查询字符串以避免此问题。我不希望重命名这些列,因为这些列与应用程序的其他部分紧密对应。
我真的想坚持使用查询字符串,因为它是由我们技术堆栈的另一个组件提供的,而创建一个解析器对于看似简单的问题将是沉重的负担。
提前致谢。
我有相同的代码,我正在尝试使用简单的条件在 Pandas 数据框中创建新字段:
if df_reader['email1_b']=='NaN':
df_reader['email1_fin']=df_reader['email1_a']
else:
df_reader['email1_fin']=df_reader['email1_b']
Run Code Online (Sandbox Code Playgroud)
ValueError Traceback (most recent call last)
<ipython-input-92-46d604271768> in <module>()
----> 1 if df_reader['email1_b']=='NaN':
2 df_reader['email1_fin']=df_reader['email1_a']
3 else:
4 df_reader['email1_fin']=df_reader['email1_b']
/home/user/GL-env_py-gcc4.8.5/lib/python2.7/site-packages/pandas/core/generic.pyc in __nonzero__(self)
953 raise ValueError("The truth value of a {0} is ambiguous. "
954 "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
--> 955 .format(self.__class__.__name__))
956
957 __bool__ = __nonzero__
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释我,我需要什么?
我想要做的是:
options = ['abc', 'def']
df[any(df['a'].str.startswith(start) for start in options)]
Run Code Online (Sandbox Code Playgroud)
我想应用一个过滤器,所以我只有在列 'a' 中具有以给定选项之一开头的值的条目。
下一个代码有效,但我需要它与几个前缀选项一起使用...
start = 'abc'
df[df['a'].str.startswith(start)]
Run Code Online (Sandbox Code Playgroud)
错误信息是
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Run Code Online (Sandbox Code Playgroud)
系列的读取真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()但不了解如何使用。
我正在用 python 做我的第一个项目。我有一个名为 df 的 pandas 数据框,有两列“close”和“volume”。我想根据前两列计算/获取 OBV 列。公式如下;
如果收盘价高于前一收盘价,则: 当前 OBC = 前一个 OBC + 当前成交量
如果收盘价低于前收盘价,则: 当前 OBV = 前 OBV - 当前成交量
如果收盘价等于前收盘价,则:当前 OBV = 前 OBV(无变化)
close volume OBC
30 2500 nan
32 3000 5500
25 2700 2800
35 4000 6800
20 1000 5800
Run Code Online (Sandbox Code Playgroud)
我正在使用这段代码:
for i in df.close[1:]:
if i > df.close.shift(-1):
df["OBC"] = df.volume + df.OBC.shift(-1)
elif i < df.close.shift(-1):
df["OBC"] = df.OBC.shift(-1) - df.volume
else:
df["OBC"] = df.OBC
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
ValueError:系列的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。 …
如果“embark_town”列中的数据是“南安普敦”,我想将它们全部更改为“曼彻斯特”。因此,在通过条件设置访问数据后,我应用了“应用”功能。有什么问题?
# Import Packages
import pandas as pd
import numpy as np
import seaborn as sns
# dataset upload
df = sns.load_dataset("titanic")
df = df.rename(columns={'pclass':'passenger_class','sex':'gender','age':'old'})
def change(name):
if name == 'Southampton':
name = 'Manchester'
return name
condition = (df.embark_town == 'Southampton')
df[condition] = df[condition].apply(change)
df
Run Code Online (Sandbox Code Playgroud)
得到一个错误:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-7-2cf6d75dce9e> in <module>()
14
15 condition = (df.embark_town == 'Southampton')
---> 16 df[condition] = df[condition].apply(change)
17 df
18 # df['embark_town'] = df['embark_town'].apply(change)
5 frames
/usr/local/lib/python3.7/dist-packages/pandas/core/generic.py in __nonzero__(self) …Run Code Online (Sandbox Code Playgroud) 我有以下数据,并且我想在某些条件下创建一个新列。请参见以下内容:
数据集:
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
Run Code Online (Sandbox Code Playgroud)
我尝试的代码和收到的错误:
>>> 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().
Run Code Online (Sandbox Code Playgroud)
我对条件out列:
当real是0和rel是0,out …
我正在使用Pandas并尝试使用Python if-else语句(也称为三元条件运算符)创建一个新列,以避免被零除.
例如下面,我想通过划分A/B来创建一个新的列C. 我想使用if-else语句来避免除以0.
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0, 5, size=(100, 2)), columns=list('AB'))
df.head()
# A B
# 0 1 3
# 1 1 2
# 2 0 0
# 3 2 1
# 4 4 2
df['C'] = (df.A / df.B) if df.B > 0.0 else 0.0
Run Code Online (Sandbox Code Playgroud)
但是,我从最后一行收到错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Run Code Online (Sandbox Code Playgroud)
我在StackOverflow上搜索并发现了有关此错误的其他帖子,但它们都没有涉及这种类型的if-else语句.一些帖子包括:
系列的真值是模棱两可的.使用a.empty,a.bool(),a.item(),a.any()或a.all()
任何帮助,将不胜感激.
我正在处理信用风险分析项目的缺失数据。Dataframe 的许多列中都存在缺失值。 数据框贷款数据如下:
[IN]: loan_data
[OUT]:
Emp_ID Emp_Name City_Name Salary Designation Emp_years Age
1 A Delhi 30,00,000 GM 15 45
2 B Mumbai NAN Clerk 2 22
3 c NAN NAN Peon 4 18
4 D Chennai 7,000 NAN 5 20
5 E NAN NAN NAN 4 50
Run Code Online (Sandbox Code Playgroud)
等等....
现在我想要显示的唯一列应该是那些我有 NAN 值的列,我想要它们的总和(有多少行有 NAN 值
例如,
[IN]:
def return_loan_data_missing(x):
if (x.isnull().sum()>0):
return x.isnull().sum()
return_loan_data_missing(loan_data)
[OUT]:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(),
a.item(), a.any() or a.all(). …Run Code Online (Sandbox Code Playgroud) 我有一个类似的代码:
df = pd.DataFrame([{'a': 1, 'b': 2}])
df['c'] = min(5, df['a'] + df['b'])
Run Code Online (Sandbox Code Playgroud)
我的目标是添加列“c”作为常数以及列“a”和“b”之和的最小值。但是Python在第二行给出了错误消息,例如:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
这个消息是什么意思?我怎样才能实现我的目标?