将一个数据帧隔离到另一个数据帧

2024-05-29 04:59:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python有点陌生。我发现解决这个问题很困难。 我有一个数据帧如下-

测向:

Date    Name    Value   Outcome
1-Mar   xyz     20         1
1-Mar   xyz     50         1
1-Mar   xyz     60         0
1-Mar   abc1    30         0
1-Mar   abc1    70         1
1-Mar   abc1    10         1
1-Mar   abc1    11         0
1-Mar   rbc     56         0
2-Mar   xyz     14         1
2-Mar   xyz     50         1
2-Mar   xyz     60         1
2-Mar   abc1    9          0
2-Mar   abc1    70         1
2-Mar   abc1    10         0
2-Mar   abc1    11         0
2-Mar   rbc     30         0

我们必须按日期分组,并检查一个给定的类的名称-它的最小值。你知道吗

预期结果-

df1型:

Date    xyz abc1    rbc    Y
1-Mar   20   10     56  2/3=0.66
2-Mar   14    9     30  1/3=0.33

在这里,Name的每个值都用给定日期的最小值填充。你知道吗

这里Y值计算如下-

       xyz  abc1    rbc
1-Mar   1    1       0
2-Mar   1    0       0

这些二进制值取自df的结果列。你知道吗

注意Name列有几个值,我刚刚粘贴了几个。你知道吗

提前谢谢你的帮助。真的很感激。你知道吗


Tags: 数据name名称dfdatevalue二进制mar
1条回答
网友
1楼 · 发布于 2024-05-29 04:59:16

尝试:

s = df.groupby(['Name','Date'], as_index=False)['Value'].min()
df1 = s.pivot(index='Date', columns='Name')
df1.columns = df1.columns.droplevel(0)

df1['Y'] = df.merge(s).pivot('Date','Name','Outcome').apply(lambda x: x.sum()/ len(x),1)

print (df1)

输出:

Name    abc1  rbc   xyz     Y
Date                
1-Mar   10     56   20   0.666667
2-Mar   9      30   14   0.333333

相关问题 更多 >

    热门问题