您当前的位置: 首页 >  pandas

B417科研笔记

暂无认证

  • 1浏览

    0关注

    154博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

pandas实用操作汇总(不断更新)

B417科研笔记 发布时间:2020-06-12 21:49:30 ,浏览量:1

文章目录
  • 前言
  • 多重条件筛选
  • 用exec在循环里更改变量名称
    • 和 eval的区别:
  • 按字符串包含字符筛选
  • 按列获取数据
  • 读取 .csv时选择不同的列属性方式:
  • 时间格式:to_datetime
    • 简单的对单个元素操作:

前言

记录下写程序过程中用到的觉得实用的pandas操作, 不断更新下,方便自己查找

多重条件筛选

df[(条件1) & (条件2)]

import pandas as pd
import numpy as np
A = np.random.rand(3, 3)
B = pd.DataFrame(A)
# 多重条件筛选
B[(B[0]>0.1) & (B[1]>> a = 5
>>> eval('37 + a')   # it is an expression
42
>>> exec('37 + a')   # it is an expression statement; value is ignored (None is returned)
>>> exec('a = 47')   # modify a global variable as a side effect
>>> a
47
>>> eval('a = 47')  # you cannot evaluate a statement
Traceback (most recent call last):
  File "", line 1, in 
  File "", line 1
    a = 47
      ^
SyntaxError: invalid syntax
按字符串包含字符筛选

.str.contains()

>>> B[3] = ['中国', '美国', '欧洲']
>>> B
          0         1         2   3
0  0.179662  0.856873  0.291942  中国
1  0.008990  0.473773  0.659489  美国
2  0.525482  0.710721  0.241518  欧洲
>>> B[B[3].str.contains('国')]
>>>           0         1         2   3
0  0.179662  0.856873  0.291942  中国
1  0.008990  0.473773  0.659489  美国

.isin()

>>> B[B[3].isin(['中国', '美国', '英国'])]
>>>          0         1         2   3
0  0.179662  0.856873  0.291942  中国
1  0.008990  0.473773  0.659489  美国
按列获取数据
# 通过列名获取
tmp = df['列名']   # tmp 就是获取的列
# 列名太长, 不打,用索引获取第三列
tmp = df[df.columns[3]]
# 另一种方法,也可以获取多列
tmp = df.iloc[:, 3] 
tmp = df.iloc[:m 3:5]
读取 .csv时选择不同的列属性方式:

用header参数控制: header=0或不指定时,默认第一行为columns。

pd.read_csv("1.csv", header=0)

不使用第一行, 由pandas自动生成0, 1作为columns:

pd.read_csv("1.csv", header=None)

跳过前几行废话:

pd.read_csv("1.csv," skip_row=3)
时间格式:to_datetime

datetime库是很方便的一个管理时间的python库,pandas与之有紧密的联动,通过 pd.datetime()可以实现。 甚至比datetime库本身更容易操作。

简单的对单个元素操作:
>>>pd.to_datetime('20200308')
>>>Timestamp('2020-03-08 00:00:00')
>>>>pd.to_datetime('2020-03-08')
>>>Timestamp('2020-03-08 00:00:00')
>>>>>pd.to_datetime('2020/03/08')
>>>Timestamp('2020-03-08 00:00:00')

可以看到:这几种常见的时间格式, 使用to_datetime方法都可以直接把该字符串转为datetime的时间类,极为方便,无需指定转换格式。

pandas也提供了指定转换格式, 如:

>>>pd.to_datetime('2020#03#08', format='%Y#%m#%d')
>>>Timestamp('2020-03-08 00:00:00')

除了日期, 时间也类似:

>>>pd.to_datetime('13:50:00')
>>>Timestamp('2020-07-14 13:50:00')
>>>>pd.to_datetime('13/50/00', format='%H/%M/%S)
>>>Timestamp('2020-07-14 13:50:00')

时间和日期一起输入也很简单, 中间可以用空格隔开:

>>>pd.to_datetime(20200712 13:50:20)
>>>Timestamp('2020-07-12 13:50:20')

后面就可以用datetime的各种操作进行处理了:

>>>import datetime
>>>pd.to_datetime(20200712 13:50:20) + datetime.timedelta(seconds=1)
>>>Timestamp('2020-07-12 13:50:21')
关注
打赏
1649265742
查看更多评论
立即登录/注册

微信扫码登录

0.0369s