簡體   English   中英

如何使用自定義標頭從 pandas 中的 3 個數據幀收集信息?

[英]How do I gather information from 3 dataframes in pandas with custom headers?

我正在學習 pandas 並做了一些練習,但沒有太多資源

所以基本上我在下面有這 4 個數據框: 在此處輸入圖像描述

在此處輸入圖像描述

因此,對於數據集中的每一項法案,我想知道有多少立法者支持該法案,有多少立法者反對該法案,還有誰是該法案的主要發起人?

這就是我想要實現的目標: 在此處輸入圖像描述

我能夠解決這個問題: 有沒有辦法計算 python pandas 的某個過濾器存在多少條目?

但是我現在要問的是我猜的 3 個表(?)

使用以下邏輯:

  • 在“bill_id”上加入“bills”和“votes”
  • 將“vote_results”加入上面的“vote_id”
  • 按“bill_id”分組
  • 通過 vote_type 篩選和計數進行聚合

我假設了一些虛擬數據:

bills = pd.DataFrame(data=[[1,"Bill #1","P1"],[2,"Bill #2","P2"]], columns=["id","title","Primary Sponsor"])

legislators = pd.DataFrame(data=[[1,"Legislator A"],[2,"Legislator B"],[3,"Legislator C"]], columns=["id","name"])

votes = pd.DataFrame(data=[[1,1],[2,1],[3,1],[4,2],[5,2],[6,2]], columns=["id","bill_id"])

vote_results = pd.DataFrame(data=[[1,1,1,1],[2,2,2,2],[3,3,3,1],[4,1,4,1],[5,2,5,2],[6,3,6,2]], columns=["id","legislator_id","vote_id","vote_type"])


result_df = bills.merge(votes.rename(columns={"id": "vote_id"}), left_on="id", right_on="bill_id") \
                 .merge(vote_results.rename(columns={"vote_id": "vote_id2"}).drop("id", axis=1), left_on="vote_id", right_on="vote_id2") \
                 .groupby(["id","title","Primary Sponsor"]) \
                 .apply(lambda x: pd.Series({
                     "supporter_count": len([v for v in x.vote_type if v==1]),
                     "opposer_count": len([v for v in x.vote_type if v==2]),
                     })) \
                 .reset_index()

Output:

   id    title Primary Sponsor  supporter_count  opposer_count
0   1  Bill #1              P1                2              1
1   2  Bill #2              P2                1              2

暫無
暫無

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

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