考虑让两个数据框共享一列。
df = pd.DataFrame([{'a': 1, 'b':2}, {'a':2, 'b': 4}])
df2 = pd.DataFrame([{'a': 1, 'c':2}, {'a': 1, 'c':3}, {'a':2, 'c': 4}, {'a': 2, 'c':5}])
grouped_df = df2.groupby('a')
我使用第一个来获取一些索引,我想用它们来过滤 groupby 之后的第二个数据帧:
my_indexes = df['a']==1
grouped_df
的长度与 my_indexes
相同。
如何使用
my_indexes
来过滤df2
?
我已经尝试过 grouped_df[my_indexes]
但它不适用于 groupby 结果,并且 apply
和 transform
想要一个可调用的。
首先根据
df2
中满足条件df['a']
的值过滤df['a'] == 1
,然后对过滤后的df执行groupby操作。基本上:
import pandas as pd
df = pd.DataFrame([{'a': 1, 'b': 2}, {'a': 2, 'b': 4}])
df2 = pd.DataFrame([{'a': 1, 'c': 2}, {'a': 1, 'c': 3}, {'a': 2, 'c': 4}, {'a': 2, 'c': 5}])
values_of_interest = df[df['a'] == 1]['a']
filtered_df2 = df2[df2['a'].isin(values_of_interest)]
grouped_df = filtered_df2.groupby('a')
举个例子:
for name, group in grouped_df:
print(f'Group: {name}')
print(group)
这给出了
Group: 1
a c
0 1 2
1 1 3