我有一个具有多个功能的较大脚本。在这些功能之一中,我先创建一个数据框,然后创建一个应用单独功能的列。
用于高层创建数据框的功能:
def data(file):
df = pd.DataFrame('A': [1,2,3,4], 'B':[5,5,6,6]
df['C'] = df['B'].apply(func)
“ func”函数本质上应该按B列过滤数据帧并返回“ A”列中的值列表。
def func(x):
df2 = df[df['B']==x]
names = df2['A']
return names
不幸的是,我无法使用全局调用将df检索到函数中,因此我对如何执行此请求感到困惑。理想的输出应该是这样的:
A B C
1 5 [1,2]
2 5 [1,2]
3 6 [3,4]
4 6 [3,4]
答案 0 :(得分:4)
在map
之后使用groupby.apply
(PS:不建议在列中使用列表,这会使调整更加困难)
df['C']=df.B.map(df.groupby('B').A.apply(list))
df
Out[872]:
A B C
0 1 5 [1, 2]
1 2 5 [1, 2]
2 3 6 [3, 4]
3 4 6 [3, 4]