【发布时间】:2018-03-09 06:56:28
【问题描述】:
我有一个如下格式的数据集
df = pd.DataFrame([[1, 'Label1', 0, 8, 2], [1, 'Label3', 0, 20, 5], [2, 'Label5', 1, 20, 2], [2, 'Label4', 1, 11, 0],
[5, 'Label2', 0, 0, -4],[1, 'Label2', 1, 8, 2], [2, 'Label5', 0, 20, 5], [3, 'Label2', 1, 20, 2], [4, 'Label4', 0, 1, 0],
[5, 'Label3', 0, 1, -4],[1, 'Label3', 1, 8, 2], [2, 'Label4', 0, 20, 5], [3, 'Label1', 1, 20, 2], [4, 'Label3', 0, 1, 0],
[5, 'Label4', 0, 1, -4],[1, 'Label4', 1, 8, 2], [2, 'Label3', 0, 20, 5], [3, 'Label3', 1, 20, 2], [4, 'Label5', 0, 1, 0],
[5, 'Label5', 0, 1, -4]],
columns=['ID', 'Label', 'Status', 'Coeff', 'result'])
cm = {'TP': 0,'FP': 0}
对于df中的每个ID,当Status为1时,我想找到Coeff列大于Result的次数。如果这个计数大于3,那么TP应该加1,如果小于3,那么FP应该加1。
示例:当ID 为1111 且Status 为1 时,如果该特定ID 的Coeff 列大于Result 列两次,则FP 必须加1。
我尝试为每个 ID 添加一个名为 count 的新列,并在每次列 Coeff 大于 Result 时将值分配为 1。
for ID in df.groupby('ID'):
df.loc[(df['Coeff'] > df['Result']), 'count'] = 1
df_new = list(df[['ID','count']].groupby(df['ID']))
然后我想找出count里面是否有数字1。如果是,则增加TP。否则,递增FP。
但我无法做到。
如何获得所需的结果?
【问题讨论】:
标签: python pandas pandas-groupby