python中有没有一种方法可以过滤字典中的所有数据帧

我有一本字典,它以 excel 名称作为键,以其内容作为值。我基本上有一个由多个数据帧组成的字典。现在我想根据特定特征过滤这本字典(以及其中的所有数据框)。


例如:


dictionary = {'contact': 

    ID  companyID   Anrede  Titel   firstname   surname

0   3025    2705    Mrs.    Sam Smith

1   3026    2706    Mr.     Michael Smith

2   3027    2710    Mr.     Christian   Peterson

,

'geography':

    ID  companyID randomID  ContinentID

0   1   3060    0   1.0

1   6   3060    2   1.0

2   7   2710    0   1.0

3   24  7530    0   6.0

4   28  3759    0   6.0

,

...

}

抱歉,我不知道如何正确显示它。希望你明白其中的原理。


现在我想通过 companyID 或什至通过姓氏来过滤它......


姓氏对我来说特别奇怪——难道不应该有一种方法可以通过 companyID 连接这些数据框,然后轻松地按姓氏过滤它,这意味着我只看到所有输入,例如他们有人使用名字 Smith .


先感谢您!


富国沪深
浏览 89回答 1
1回答

翻翻过去那场雪

最好根据“ID”或“companyID”将多个数据帧合并为一个,然后执行过滤。您可以通过“companyID”合并它们,如下所示。final_df = Nonefor 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 ContinentIDID companyID                                                         0  3025       2705.0  Mrs.        Sam     Smith       NaN         NaN1  3026       2706.0   Mr.    Michael     Smith       NaN         NaN   3060          NaN   NaN        NaN       NaN       0.0         1.02  3027       2710.0   Mr.  Christian  Peterson       NaN         NaN6  3060          NaN   NaN        NaN       NaN       2.0         1.07  2710          NaN   NaN        NaN       NaN       0.0         1.024 7530          NaN   NaN        NaN       NaN       0.0         6.028 3759          NaN   NaN        NaN       NaN       0.0         6.0s很少,NaN因为您在每个数据框中都没有匹配的索引。我希望您的实际数据更加连贯。一旦你有了这个“合并”数据框,你就可以过滤你喜欢的任何列。解释您有不同的列“集”,它们在字典中表示为单独的键值对。我假设您想将这些数据帧与“ID”和“companyID”合并为某种索引。这就是上面的代码所实现的。它还添加了一个额外的列索引级别来表示列集来自哪个“键”。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python