pandas DataFrame操作(1)
导入库
import pandas as pd
import numpy as np
构建DataFrame
tuples = [('a', 'v1'), ('a', 'v2'), ('b', 'v1'), ('b', 'v2')]
index = pd.MultiIndex.from_tuples(tuples)
columns = ['c1', 'c2']
values = np.arange(8).reshape(4, 2)
df = pd.DataFrame(values, columns=columns, index=index)
df
输出结果:
c1 c2
a v1 0 1
v2 2 3
b v1 4 5
v2 6 7
读取csv或xlsx文件创建DataFrame
# 读取csv创建DataFrame
df = pd.read_csv(csv_file_path)
# 读取xlsx创建DataFrame
df = pd.read_excel(xlsx_file_path)
选择多列
df[col_names_list]
: 直接通过列名称列表来选择多列f.select_dtypes(include=['int'])
: 选择数据类型是int的列df.filter(like='str', regex='re')
: 此方法只会检查所有的column names,而不会检查确切的数据df[new_col_order_list]
: 当要对df中的列组织顺序时,可以直接用想要的列名序来index(df + .00501)// .01
: 可以将df中的数据全都四舍五入成1位小数
df.loc[] 使用
df.loc['i1']
: 返回一个Series,包含i1行的数据df.loc[['i1', 'i2']]
: 返回一个df,包含i1 i2两行数据df.loc['i1', 'c1']
: 返回对应位置的数据df.loc['i1':'12', 'c1':'c2']
: 返回一个df,包含对应行和列的数据df.loc[df['c1'] > 1]
: 返回一个df,包含c1列中数值大于1的所有行df.loc[df['c1'] > 1, ['c2']]
: 返回一个df,包含上面返回df中的c2列df.loc[lambda df: df['c1'] == 1]
: 返回一个df,包含c1列中数值等于1的所有行df.loc[['i1', 'i2'], ['c1']] = 1
: 将df中对应位置的数据改为1df.loc['i1'] = 1
: 将对应行的数据全部改为1df.loc[:, 'c1'] = 1
:将对应列的数据全部改为1df.loc[df['c1'] > 1] = 0
: 将对应列数据大于1的所有行的所有数据改为0f.loc[1:9]
: 返回1-9行的数据
df.iloc[] 使用
- 和
df.loc[]
一样的功能,只是完全基于数字进行索引,例如df.iloc[1:3, 1:3]
就相当于df.loc['i1':'i1', 'c1':'c3']
,其他类似 df.loc[]
也能完全基于数字进行索引df.at['i1', 'c1']
: 返回对应位置的值df.at['i1', 'c1'] = 1
: 将对应位置的值设为1