Python Pandas基于需要过滤数据框的功能创建列

时间:2018-10-18 19:45:41

标签: python pandas

我有一个具有多个功能的较大脚本。在这些功能之一中,我先创建一个数据框,然后创建一个应用单独功能的列。

用于高层创建数据框的功能:

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]

1 个答案:

答案 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]