【问题标题】:pandas groupby with two key带有两个键的熊猫 groupby
【发布时间】:2015-05-14 16:35:56
【问题描述】:

我花了整整一个下午的时间试图完成这项任务,但失败了 ,我有一个这样的熊猫数据框

columns=[ka,kb_1,kb_2,timeofEvent,timeInterval]
0:'3M' '2345' '2345' '2014-10-5',3000
1:'3M' '2958' '2152' '2015-3-22',5000
2:'GE' '2183' '2183' '2012-12-31',515
3:'3M' '2958' '2958' '2015-3-10',395
4:'GE' '2183' '2285' '2015-4-19',1925
5:'GE' '2598' '2598' '2015-3-17',1915

要实现的是下面按“ka和kb_1”分组的新数据框

columns=[ka,kb,errorNum,errorRate,totalNum of records]
'3M','2345',0,0%,1
'3M','2958',1,50%,2
'GE','2183',1,50%,2
'GE','2598',0,0%,1

(错误记录的定义:当kb_1!=kb_2时,对应的记录被视为异常记录)

我的代码是这样的

df['isError'] = (df['kb_1'] != df['kb_2']).astype('int')
grouped2 = df.groupby(['ka', 'kb_1'])

df_rst = pd.DataFrame()
df_rst['ka']  =grouped2['ka'].all()
df_rst['kb_1'] = grouped2['kb_1'].all()
df_rst['errorNum'] = grouped2['isError'].transform(sum)
df_rst['totalNum of records'] = grouped2.size()
df_rst['Soll_neq_Letzt_error_rate'] = df_rst['errorNum'].astype('float').div(df_rst['totalNum'].astype('float'), axis='index')
df_rst.to_csv('rst.csv',index=False)

但结果不是我想要的。

例如,列 kb_1 变为 true/false,errorNum 变为 Nan。 谁能解释为什么并给出一个可行的实现?谢谢

【问题讨论】:

  • 请显示样本数据和所需结果。说结果不是你想要的,并不能真正告诉我们你想要什么。
  • 谢谢,我刚刚添加了输入和所需的输出

标签: python pandas group-by aggregate-functions


【解决方案1】:

我不确定你到底做了什么,但我不认为你离得那么远。

df2 = df.groupby(['ka','kb_1'])['isError'].agg({ 'errorNum':  'sum',
                                                 'recordNum': 'count' })

df2['errorRate'] = df2['errorNum'] / df2['recordNum']

         recordNum  errorNum  errorRate
ka kb_1                                
3M 2345          1         0        0.0
   2958          2         1        0.5
GE 2183          2         1        0.5
   2598          1         0        0.0

【讨论】:

  • 哇,谢谢,无法想象它只需要两行即可完成,因为我还在考虑加入表格。
  • 很高兴为您提供帮助,如果您对答案相当满意,请记得点击复选标记。
  • 完成了,我在实现这一目标时遇到了另一个困难,因为我尝试操作的 csv 太大而无法放入内存,请参阅stackoverflow.com/questions/30245640/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-24
  • 1970-01-01
  • 2019-09-16
  • 1970-01-01
  • 2017-03-01
  • 2018-12-29
  • 2020-03-25
相关资源
最近更新 更多