一些pandas的操作

文章目录

对于列的操作

  1. 在groupby sum 之后最好要reset_index()
df1 = df.groupby([col1, col2]).sum()
df2 = df.groupby([col1, col2]).sum().reset_index(drop)
df1[col] += 'asdf'
df2[col] += 'asdf'

如果在df这张表很大的情况下,df1会花费很长的时间(我遇到的情况为1-2s),而df2只会花费很短的时间(0.00x s)

  1. concat
    拼接很好用
df3 = pd.concat([df1, df2], ignore_index=True)
  1. 取特定的行
df = df[(df[col]1 == '') | ((df[col2] & df[col3]))]

这里主要是要注意 | & 的用法,必须要加括号

  1. apply调用
对于两列之间的操作:
df[[col1, col2]].apply(lambda x: x[0] op x[1])
例:
df['c'] = df[['a', 'b']].apply(lambda x: x[0] + x[1])

对于调用函数:
df.apply(lambda x: func(x[col1], x[col2], ...))
例:
def my_func(args_1, args_2)
df.apply(lambda x: my(x[col1], x[col2]))

对应apply这个函数,有几个参数很有用:

  • axis:这个参数可以针对每一行或者是每一列来执行函数
  • result_type:这个函数可以指定返回的结果的类型
  1. 在进行类似于drop_duplicates, drop 之类的带有inplace参数的操作时,如果的确要修改原来的DataFrame,并且后续还要对DataFrame进行操作,那么不要使用下面这种方式:
df = df.drop(col1, axis=1)
df[col2] = ...  //操作df里面的东西

最好使用inplace参数

df = df.drop(col1, axis=1, inplace=True)
  1. 想要修改dataframe的单元格的话,最好使用loc这个函数
df.loc[哪一行,哪一列] = ???
df.loc[[哪些行]]
df.loc[bool] #取出满足条件的行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值