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”合并为某种索引。这就是上面的代码所实现的。它还添加了一个额外的列索引级别来表示列集来自哪个“键”。
添加回答
举报