我正在使用Apply来利用一个数据框来操纵第二个数据框并返回结果。这是一个简化的示例,我意识到可以使用“ in”逻辑来回答,但现在让我们继续使用.apply()作为约束:
import pandas as pd
df1 = pd.DataFrame({'Name':['A','B'],'Value':range(1,3)})
df2 = pd.DataFrame({'Name':['A']*3+['B']*4+['C'],'Value':range(1,9)})
def filter_df(x, df):
return df[df['Name']==x['Name']]
df1.apply(filter_df, axis=1, args=(df2, ))
哪个要返回:
0 Name Value
0 A 1
1 A 2
2 ...
1 Name Value
3 B 4
4 B 5
5 ...
dtype: object
我想看到的是一种带有Name和Value标头的格式化DataFrame。所有建议表示赞赏!
Name Value
0 A 1
1 A 2
2 A 3
3 B 4
4 B 5
5 B 6
6 B 7
答案 0 :(得分:0)
我认为,这不能仅基于申请完成,您需要pandas.concat:
result = pd.concat(df1.apply(filter_df, axis=1, args=(df2,)).to_list())
print(result)
输出
Name Value
0 A 1
1 A 2
2 A 3
3 B 4
4 B 5
5 B 6
6 B 7