这是我的代码,我试图逐列比较两个数据帧的值,并按1递增。代码给出了下面的错误。好心的请求在这里帮我。
df_select = pd.read_csv(path,low_memory=False)
df_datahub = pd.read_csv(path1,low_memory=False)
df_select_i = df_select.set_index('medical_event_vod__c')
df_datahub_i = df_datahub.set_index('intact_id')
i, j, k, l, m = 0, 0, 0, 0, 0
for index, row in df_select_i.iterrows():
m += 1
if index in df_datahub_i.index:
i += 1
df_temp_select = df_select_i.loc[index]
df_temp_datahub = df_datahub_i.loc[index]
if df_temp_select['createddate'] == df_temp_datahub['src_sys_cr8_ts'] :
k+=1
else:
j+=1
else:
l += 1
print(m)
print(i)
print(j)
print(k)
print(l)
这是错误:
if df_temp_select['createddate'] == df_temp_datahub['src_sys_cr8_ts'] :
raise ValueError(
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or
a.all().
发布于 2020-08-17 16:45:23
这里的问题是,您正在将一个pd.Series与一个值进行比较,因此您将有多个True和多个False值,如上例所示。这当然是模棱两可的,因为条件既不是真也不是假。
ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。
发布于 2020-08-17 16:52:26
当您将两个系列(比如您的列)与==
进行比较时,它会逐个元素地比较它们并返回一个系列。如错误所示,您可以在返回的序列上使用.all()
来检查是否所有比较都是True
。
示例:
In [1]: import pandas as pd
In [2]: x = pd.Series([1,2,3])
In [3]: y = pd.Series([1,3,2])
In [4]: x == y
Out[4]:
0 True
1 False
2 False
dtype: bool
In [5]: (x == y).all()
Out[5]: False
https://stackoverflow.com/questions/63447354
复制相似问题