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

前言

记录下写程序过程中用到的觉得实用的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]<0.8)]

在这里插入图片描述

用exec在循环里更改变量名称

想在循环里, 赋值不同名称的变量时:

for i in range(5):
	exec("a" + str(i) + "=i")

和 eval的区别:

  • exec 运行一段程序,返回None
  • eval 运行一个表达式, 返回表达式结果。
>>> 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 "<stdin>", line 1, in <module>
  File "<string>", 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')

猜你喜欢

转载自blog.csdn.net/weixin_39274659/article/details/106714500