如何基于另一列上的自定义函数创建新的python列

时间:2018-09-25 00:00:48

标签: python apply

请,我希望能对此问题做出任何投入。

我在下面有这张桌子

enter image description here

我想基于ID列创建一个新的列“ cap”。

步骤:
获取所有唯一ID值及其计数
如果计数大于或等于4,则返回A
如果计数大于2且小于4,则返回B
如果计数小于或等于2,则返回C

enter image description here

我需要一种解决上述问题的新方法

这是我尝试的操作,尽管遇到错误。

cnt = pd.DataFrame(train['ID'].value_counts())

def cap_fnx(data, cnt):  
  for y in range(len(cnt['ID'].unique())):
    if data['ID'] == cnt.index[y]:
      if cnt.loc[y].ID >= 4:
        return 'A'
      if cnt.loc[y].ID > 2 and cnt.loc[y].ID < 4:
        return 'B'
      if cnt.loc[y].ID <= 2:
        return 'C'

train['cap'] = train.apply(cap_fnx, args=(cnt))

这是数据样本;

train = pd.DataFrame(columns=['ID','score'])
train.loc[0] = np.array([11, 0.11])
train.loc[1] = np.array([11,4.64 ])
train.loc[2] = np.array([12,3.39])
train.loc[3] = np.array([11,0.44 ])
train.loc[4] = np.array([17,4.83])
train.loc[5] = np.array([17,2.22])
train.loc[6] = np.array([11,1.18])
train.loc[7] = np.array([13,4.74])
train.loc[8] = np.array([12,2.13])
train.loc[9] = np.array([8,0.44])
train.loc[10] = np.array([17,1.73])

0 个答案:

没有答案