首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pandas:如何比较两列的浮点值

pandas:如何比较两列的浮点值
EN

Stack Overflow用户
提问于 2019-02-20 07:31:49
回答 2查看 1.6K关注 0票数 0

我的问题是我不知道如何比较两个不同列中的数字(在相同的数据帧中)。我想知道第二列中的数字是否至少比同一行中第一列的数字大两倍,并检查其余行的数字是否相同,并最终过滤它们,最后得到一个数据帧,其中第二列中的所有数字都至少比第一列中的数字大两倍。所以,一开始我是这样做的:

代码语言:javascript
复制
ac = pd.DataFrame.dropna(ab)
ad = pd.DataFrame.drop_duplicates(ac)

有太多的NAN了,我决定把它们处理掉

代码语言:javascript
复制
ad["first column"] = ad["first column"].astype(float)
ad["second column"] = ad["second column"].astype(float)

即使没有这些行,我仍然会在以下代码中得到相同的错误

然后我试着走下一步:

代码语言:javascript
复制
boolean = []

def comp(number):
    if ad.loc[:, "first column"] >= ad.loc[:, "second column"]*2:

        boolean.append[True]

    else:

         boolean.append[False]

起初我把它写成一个for循环,但后来我把它改成了这个函数。所以,我可以使用apply()方法,但无论哪种方式,我都会得到这个错误:

代码语言:javascript
复制
ValueError: ('The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().', 'occurred at index Probe Set ID')
EN

回答 2

Stack Overflow用户

发布于 2019-02-20 07:39:07

您可以为每一列创建一个新的序列数据帧,并使用该数据帧进行比较。

代码语言:javascript
复制
df = pd.DataFrame(... all your data with columns...)
df = df.astype(float) #convert your whole df to a float

firstcol = df['firstcol']
secondcol = df['secondcol']*2

#a new series of True/False
booleanmatch = firstcol>secondcol

#remove rows that are false from df
df= df.loc[booleanmatch,:]

希望这能解决这个问题。

票数 0
EN

Stack Overflow用户

发布于 2019-02-20 07:40:37

要比较数据帧中的两列,应使用.query https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html

代码语言:javascript
复制
import pandas as pd
d = {'col1': [1, 2, 6], 'col2': [3, 4, 5]}
df = pd.DataFrame(data=d)
df.query('col1 > col2')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54776540

复制
相关文章

相似问题

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