创建新DataFrame
df=pd.DataFrame()
DataFrame 大小
df.shape
把单元格内容转成list
df[column]=df[column].str.split(" \n",expand=False)
索引
把索引建为新列
df["column_name"]=df.index
更新筛选后的索引
df.index = range(len(df))
重设索引
result = result.reset_index()
result = result.reset_index(drop=True)
多重索引
取出第一级索引 :get_level_values(0)
行两层索引变成一行
level0 = result.columns.get_level_values(0)
level1 = result.columns.get_level_values(1)
result.columns = level0 + '_' + level1
两行索引交换位置
result= result.swaplevel(axis=1)
列相关
输出列名
df.columns 列名列表概述
df.columns.values 全量列名
修改列名
df_new=df.rename(columns={'原列名1': '新列名1','原列名2': '新列名2'})
df_new=df.rename(columns=lambda x:x.replace('列名部分字段',''), inplace=True)
转小写
df_new.columns = df.columns.map(lambda x: x.lower())
去除前后空格
df_new.columns = df.columns.map(lambda x: x.strip())
根据列名返回列序号
int=df.columns.get_loc(列名) #从1 开始
无列名选列
df.columns[序号] 返回列名
多行列名读取
df =pd.read_excel(path,header=(0,1))
字段类型
dtype
.str.isdigit() 判断是否数值
输出行数
行数:df.shape[0]
列数:df.shape[1]
矩阵大小:np.shape(df)
shape 数据维度
去重
df.drop_duplicates()
删除行列
删除空行
df.dropna()
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
删除指定行
删除指定列
df = df.drop(columns=['Unnamed: 0'])
排序
df.sort_values()
df.sort_index(axis=0) #列名降序
df.sort_index(axis=1) #列名升序
图中文乱码
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
显示全部的行列
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
int与str转化
df[column]=df[column].apply(str)
df[column]=df[column].apply(int)
去\n \r
df[column]=df[column].apply(lambda x:x.replace('\n', '').replace('\r', ''))
多值替换
df.replace({"a1":"new1","a2":"new2"}, inplace = True)
列里不同的值数量
df.column.nunique()
df.nunique()
列值截取
df[column]=df[column].str[0:2]
空值填充
mydf['列名']=mydf['列名'].fillna(0)
table2 = table2.fillna(value=0)
数据格式调整
百分号2位小数
pt1['人数占比']=(pt1['人数']/pt1['人数'].sum()).map('{:.2%}'.format)
两位小数
pt1['单价']=(pt1['销售额']/pt1['件数']).map('{:.2f}'.format)