如何解决python中有没有办法过滤字典中的所有数据帧
我有一本字典,其中以excel名称为键,其内容为值。我基本上有一个包含多个数据帧的字典。 现在,我想根据特定特征过滤此字典(及其中的所有数据帧)。
E.G。:
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,...
}
对不起,我不知道如何正确显示它。希望您理解该原理。
现在我想按公司ID或姓氏来过滤它...
姓氏对我来说尤其奇怪-例如,应该没有办法通过companyID连接这些数据框,然后轻松按姓氏对其进行过滤,这意味着我只能看到所有输入中有姓名的人例如史密斯。
提前谢谢!
解决方法
正如@ user32882所指出的,最好将多个数据帧基于“ 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
NaN
很少,因为您在每个数据帧中没有匹配的索引。希望您的实际数据一致。有了这个“合并”的数据框后,就可以过滤您喜欢的任何列。
说明
您有不同的“组”列,这些列在dict中表示为单独的键值对。我假设您想将这些数据框与“ ID”和“ companyID”合并为某种索引。这就是上面的代码所实现的。它还增加了列索引的额外级别,以指示列集来自哪个“键”。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。