Python dataframe 多列数据过滤,如何优化代码?

问答 mhcnsk ⋅ 于 2019-07-03 17:57:55 ⋅ 最后回复由 青牛 2019-07-04 16:09:44 ⋅ 2125 阅读

代码如下,可以运行也可以得到需要的结果,但是我觉得函数不漂亮,想学习一下高手是如何优化,写出简介的代码。在STACKOVERFLOW上也发了帖子,目前没有收到答案,听说知乎有很多大神,特来求助,有好的答案可以搭讪10元(第一次用知乎提问,不知道怎么打赏)

import pandas as pd

import numpy as np

df=pd.DataFrame({

'time':[8,8,8,6,6,6,3,3,3],

'code':[30,31,32,62,61,63,56,57,55],

'unit':['T1','T1','T1','T2','T2','T2','T3','T3','T3'],

})

print(df)

print()

def lowfilter(df,c1='time',c2='code'):

ser=df.groupby(df[c1])[c2].min()

ser = ser.reset_index()

df_tmp=pd.DataFrame()

for idx in ser.index:

df_tmp = pd.concat([df_tmp,df[(df[c1]==ser.iloc[idx][c1]) & (df[c2]==ser.iloc[idx][c2])]])

return df_tmp

print(lowfilter(df))

成为第一个点赞的人吧 :bowtie:
回复数量: 1
  • 青牛 海汼部落创始人,80后程序员一枚,曾就职于金山,喜欢倒腾技术做产品
    2019-07-04 16:09:44

    小伙子 你写的很不错了 多列数据过滤可以直接在原来的df上操作 用df['aaa']==a &df['bbb']==b 就可以了

暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter