[英]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.