dataframe的构造,取值,赋值,移动,交集,并集,排序,打印,转List,导出csv 刺骨的言语ヽ痛彻心扉 2021-07-26 19:47 138阅读 0赞 一、构造 da=pd.read\_csv(filepath\_or\_buffer='data.csv',sep='\\t') print(da) datas=pd.DataFrame(da) 2、直接赋值 df = pd.DataFrame(\[\[1.4, np.nan\], \[7, -4\], \[np.nan, np.nan\], \[0.75, -1.3\]\], index=\[1, 2, 3, 4\], columns=\['one', 'two'\]) 3、Series转换为DataFrame 一种方法是通过字典转 metric = df.loc[0][index] metric_dict = {'metric_name':metric.index,'ereport_pie_y':metric.values} data = pd.DataFrame(metric_dict) 另外一种直接通过Series的`to_frame()`方法 df=metric.to_frame() 如果要index也做为一列,可以用 df = df.reset_index() 二、读值 \# 第2行第2列 ds =datas.ix\[\[1\]\].values\[0\]\[1\] ds = datas.loc\[1, 'open'\] \#取第二行 ds = datas.loc\[2\] \# 名为“open"的列 ds = datas\["open"\] \# 选取open列大于4的 ds = datas\[datas\["open"\]>4\] \# 2-4行,"date","open"列 ds = datas.loc\[1:3,\["date","open"\]\] \# 第2行 ds = datas.ix\[\[1\]\] ds = datas\[1:2\] 列名 df.columns.values 返回 array 或list(df.columns) 三、赋值 新增列 df\['one\_sort'\] = sort\_list df\['one\_sort'\] = 0 按条件赋值 df.one\[df.two>0\] = 0 nan值处理 \# 删除包含NaN值得任何行 df.dropna(axis = 0) \#将所有 NaN 值替换为 0 df.fillna(0) 删除列 df_base.drop(['组件负责人_y','部门_y'],axis=1,inplace=True) 删除行 .drop()方法若不设置参数inplace=True df\_base.drop(\[0\],inplace=True) # 筛选在的 df123=df123[df123.License_x.isin(['Apache','BSD','MIT','EPL'])] # 筛选不在的 Version_list=list(df123.Version) Version_list.remove('9999.0') df123 = df123[df123.Version.isin(Version_list)] 删除重复的 df_p=df_p.drop_duplicates(['姓名'],keep=False) 删除含缺失值的行 df1=df1.dropna(axis = 0,subset =['Version']) 删除含缺失值的列 df1=df1.dropna(axis = 1,subset =\[1\]) 四、转换 \#第1行转为list params=datas.loc\[1\].tolist() 字典转dataframe df=pd.DataFrame.from_dict(dict) 交集 df12=pd.merge(df1,df2,on=['Component'],how='inner') 并集 df12=pd.merge(df1,df2,on=['Component'],how='outer') 差集(从df1中过滤df1在df2中存在的行): df1 = df1.append(df2) df1 = df1.append(df2) df1 = df1.drop_duplicates(subset=['Component', 'Version'],keep=False) 移动 \# axis指定移动的轴:0为行,1为列 \# period:参数指定移动的步幅,可以为正为负 \# 整体下移1行 df.shift(axis=0, periods=1) \# 某列下移为新列 ,下移部分为nan df['open_new']=df['open'].shift(axis=0, periods=1) 五、排序 \# 按某列排序 df=df.sort\_values(by='one',ascending=True) \# 对行进行排序并获取列ID \# Determine the max value and column name and add as columns to df df\['Max1'\] = df.max(axis=1) df\['Col\_Max1'\] = df.idxmax(axis=1) 六、应用 将排名赋给列 \# 按某列排序 df=df.sort\_values(by='one',ascending=True) sort\_list=\[\] df\_len =df.iloc\[:,0\].size for i in range(1,df\_len+1): sort\_list.append(i/df\_len) print(sort\_list) df\['one\_sort'\] = sort\_list 左连接 result = pd.merge(left, right, how='left', on=['key1', 'key2']) 七、打印 \#显示所有列 pd.set\_option('display.max\_columns', None) \#显示所有行 pd.set\_option('display.max\_rows', None) 八,导出csv 当有中文时,需要utf-8-sig,才能用excel打开,因为excel能够正确识别用gb2312、gbk、gb18030或utf\_8 with BOM 编码的中文,如果是utf\_8 no BOM编码的中文文件,excel打开会乱码 csv = df.to_csv(index=False,encoding="utf-8") return CsvResponse( csv, status=200, headers=generate_download_headers("csv"), mimetype="application/csv", )
还没有评论,来说两句吧...