亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python中有沒有一種方法可以過濾字典中的所有數據幀

python中有沒有一種方法可以過濾字典中的所有數據幀

富國滬深 2023-06-20 10:18:41
我有一本字典,它以 excel 名稱作為鍵,以其內容作為值。我基本上有一個由多個數據幀組成的字典?,F在我想根據特定特征過濾這本字典(以及其中的所有數據框)。例如:dictionary = {'contact':     ID  companyID   Anrede  Titel   firstname   surname0   3025    2705    Mrs.    Sam Smith1   3026    2706    Mr.     Michael Smith2   3027    2710    Mr.     Christian   Peterson,'geography':    ID  companyID randomID  ContinentID0   1   3060    0   1.01   6   3060    2   1.02   7   2710    0   1.03   24  7530    0   6.04   28  3759    0   6.0,...}抱歉,我不知道如何正確顯示它。希望你明白其中的原理。現在我想通過 companyID 或什至通過姓氏來過濾它......姓氏對我來說特別奇怪——難道不應該有一種方法可以通過 companyID 連接這些數據框,然后輕松地按姓氏過濾它,這意味著我只看到所有輸入,例如他們有人使用名字 Smith .先感謝您!
查看完整描述

1 回答

?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

最好根據“ID”或“companyID”將多個數據幀合并為一個,然后執行過濾。您可以通過“companyID”合并它們,如下所示。


final_df = None

for key, value in dictionary.items():

    value = value.set_index(['ID', 'companyID'])

    # add an extra level of column where the level is the key from dict

    value.columns = pd.MultiIndex.from_product([[key], value.columns])

    if not type(final_df) == pd.DataFrame:

        final_df = value

    else:

        final_df = final_df.merge(value, left_index=True, right_index=True, how='outer')

Out:

             contact                            geography            

              Anrede Titel  firstname   surname  randomID ContinentID

ID companyID                                                         

0  3025       2705.0  Mrs.        Sam     Smith       NaN         NaN

1  3026       2706.0   Mr.    Michael     Smith       NaN         NaN

   3060          NaN   NaN        NaN       NaN       0.0         1.0

2  3027       2710.0   Mr.  Christian  Peterson       NaN         NaN

6  3060          NaN   NaN        NaN       NaN       2.0         1.0

7  2710          NaN   NaN        NaN       NaN       0.0         1.0

24 7530          NaN   NaN        NaN       NaN       0.0         6.0

28 3759          NaN   NaN        NaN       NaN       0.0         6.0

s很少,NaN因為您在每個數據框中都沒有匹配的索引。我希望您的實際數據更加連貫。一旦你有了這個“合并”數據框,你就可以過濾你喜歡的任何列。


解釋


您有不同的列“集”,它們在字典中表示為單獨的鍵值對。我假設您想將這些數據幀與“ID”和“companyID”合并為某種索引。這就是上面的代碼所實現的。它還添加了一個額外的列索引級別來表示列集來自哪個“鍵”。


查看完整回答
反對 回復 2023-06-20
  • 1 回答
  • 0 關注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號