首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何迭代数据框行并比较if条件中的值

如何迭代数据框行并比较if条件中的值
EN

Stack Overflow用户
提问于 2020-08-17 16:36:23
回答 2查看 46关注 0票数 0

这是我的代码,我试图逐列比较两个数据帧的值,并按1递增。代码给出了下面的错误。好心的请求在这里帮我。

代码语言:javascript
运行
复制
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)

这是错误:

代码语言:javascript
运行
复制
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().
EN

回答 2

Stack Overflow用户

发布于 2020-08-17 16:45:23

这里的问题是,您正在将一个pd.Series与一个值进行比较,因此您将有多个True和多个False值,如上例所示。这当然是模棱两可的,因为条件既不是真也不是假。

ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。

票数 1
EN

Stack Overflow用户

发布于 2020-08-17 16:52:26

当您将两个系列(比如您的列)与==进行比较时,它会逐个元素地比较它们并返回一个系列。如错误所示,您可以在返回的序列上使用.all()来检查是否所有比较都是True

示例:

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63447354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档