import pandas as pd
import numpy ad np
一、获取dataframe里某一列的值
data = pd.DataFrame(np.arange(16).reshape(4,4),index = list("ABCD"),columns=list('wxyz'))
(1)获取列“w”的值
方式1:data['w']
方式2:data.get('w')
(2)获取行A的数据
方式1:data.loc['A']
(3)获取w和x列的所有数据
方式:data.loc[:,['w','x']]
(4)获取列w值为0的数据
方式1:data.loc[data.w == 0]
方式2:data[data.w.isin([0])]
方式3:data.loc[data['w'].isin([0])
(5)获取列w的值大于0的数据
方式1:data.loc[data.w > 0]
方式2:data[data.w > 0]
(6)新增一列A,或者修改列A的值
方式1:data['A'] = 666
方式2:通过判断的方式添加,如果列w的值大于2则新增列A
data['A'] = data.apply(lambda x: 666 if x.w > 2 else 0, axis=1)
data.loc[data.w > 2, 'A'] = 666
data['A'] = np.where(data.x > 2, 666, 0)
方式3:通过计算dataframe的列的值来新增,将列w和x的值相加作为A的值
data['A'] = data.apply(lambda x: x.w + x.x, axis=1)
(7)刷选出dataframe中值为NaN的数据
ssss = pd.DataFrame(columns=['A', 'B', 'C'], data=[(1, 2), (1, 2, 3)])
查询出列C为空的数据
result = ssss.loc[lambda x:pd.isnull(x['C'])]
(8)对dataframe的数据进行排序操作
ssss = pd.DataFrame(columns=['A', 'B', 'C'], data=[(1, 2), (1, 2, 3)])
按列A进行升序排序
ssss .sort_values(by='A', axis=0, ascending=True, inplace=True)
(9)重置索引(行号)
ssss = pd.DataFrame(columns=['A', 'B', 'C'], data=[(1, 2), (1, 2, 3)])
ssss.reset_index(inplace=True).
(10)刪除
ssss = pd.DataFrame(columns=['A', 'B', 'C'], data=[(1, 2), (2, 2, 3)])
删除掉列C为NaN的行
result_1 = ssss.dropna(subset=['C'])
删除列A中值为1的行
result_2 = ssss[-ssss.A.isin(['1'])]
(11)将dataframe数据转换为字典等形式
data = DataFrame(np.arange(16).reshape(4, 4), index=list("ABCD"), columns=list('wxyz'))
print(data)
形式1: # 将dataframe数据转换为字典格式
# dict - 默认值:列名是键,值是索引的字典:数据对
data_dict1 = data.to_dict("dict")
print(data_dict1)
形式2:
# list - 键是列名,值是列数据列表
data_dict2 = data.to_dict("list")
print(data_dict2)
形式3:
# split - 将列/数据/索引拆分为键,值分别为列名,数据值分别按行和索引标签
data_dict3 = data.to_dict("split")
print(data_dict3)
形式4:
# 记录 - 每一行都成为一个字典,其中键是列名,值是单元格中的数据
data_dict3 = data.to_dict("records")
print(data_dict3)
形式5:
# index - 类似于'records',但是一个字典字典,其中键作为索引标签(而不是列表)
data_dict = data.to_dict("index")
print(data_dict)
(12)去重和填充
4、去重
df = df.drop_duplicates()
5、对含有NaN的行的处理
(1)填充值
# 全部填充0
df.fillna(0)
# 单列填充
df['A'] = df['A'].fillna(0)