簡體   English   中英

在Python中將Pandas Dataframe與集合進行比較

[英]Comparing Pandas Dataframe to a set in Python

我有一個包含一些銷售數據的數據框,如下所示:

df = pd.DataFrame({'bill_id': ['1001','1002','1006']})

我還有另外一組帶有bill_id的列表:

{'1002', '10006', '1009'}

我試圖找到bill_id在數據幀和設定共同的,並試圖以下:

issues = list(l in set(df['bill_id']))

我收到錯誤TypeError: 'bool' object is not iterable ,想知道我是否檢查不正確。 期望輸出為列表。

集合的預期輸出如下:

{'1002'}
df = pd.DataFrame({'bill_id': ['1001','1002','1006']})
bill_id = ('1002', '10006', '1009')
set(df.bill_id.values).intersection(bill_id)

嘗試這樣的事情:

issues = set(df['bill_id']).intersection(other_bill_id_set)

1.將字典轉換為列表
2.從數據框中獲取唯一的bill_id列表
3,使用集合和交集方法獲得共同元素

df = pd.DataFrame({'bill_id': ['1001','1002','1006']})
bill_id = list({'1002', '10006', '1009'})

bill_df = list(df['bill_id'].unique())
final_res = list(set(bill_df).intersection(bill_id))

print(final_res)

我希望它能解決您的問題

您還可以使用isin獲取數據框中與其他ID列表匹配的行。

In [1]: df = pd.DataFrame({'bill_id': ['1001','1002','1006']})
        other_bill_ids = set({'1002', '10006', '1009'})
        df[df['bill_id'].isin(other_bill_ids)]
Out[1]:   bill_id
        1    1002

如果您只需要列表或集合,就可以

In [2]: df['bill_id'][df['bill_id'].isin(other_bill_ids)].tolist()
Out[2]: {'1002'}

要么

In [3]: df['bill_id'][df['bill_id'].isin(other_bill_ids)].tolist()
Out[3]: ['1002']

暫無
暫無

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

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