簡體   English   中英

大熊貓:如何比較兩列的浮點值

[英]pandas: How to compare float values of two columns

我的問題是我不知道如何比較兩個不同列(在同一數據幀中)的數字。 我想知道第二列中的數字是否至少比同一行中第一列的數字大兩倍,並檢查其余行是否相同,並最終對其進行過濾,最后,具有一個數據框,其中第二列中的所有數字至少比第一列中的數字大兩倍。 所以,起初我是這樣做的:

ac = pd.DataFrame.dropna(ab)
ad = pd.DataFrame.drop_duplicates(ac)

有太多的NAN,我決定擺脫它們

ad["first column"] = ad["first column"].astype(float)
ad["second column"] = ad["second column"].astype(float)

即使沒有這些內容,我在下面仍然會遇到相同的錯誤

然后,我嘗試執行下一步:

boolean = []

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

        boolean.append[True]

    else:

         boolean.append[False]

起初,我將其編寫為for循環,但隨后將其更改為該函數。 因此,我可以使用apply()方法,但是無論哪種方式,我都會收到此錯誤:

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')

您可以為每列創建一個新的系列數據框,並使用該框進行比較。

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,:]

希望這能解決問題。

要比較數據框中的兩列,應使用.query https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html

import pandas as pd
d = {'col1': [1, 2, 6], 'col2': [3, 4, 5]}
df = pd.DataFrame(data=d)
df.query('col1 > col2')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM