天天看点

pandas 取excel 中的某一列_工作中常用的pandas速查

pandas 取excel 中的某一列_工作中常用的pandas速查
注:进行下面的操作前请先导入pandas模块:
import pandas as pd
           

获取列名列表:

cols 
           

重新调整列的顺序(将data2的列顺序按data1的列顺序来调整,data1和data2的字段一样,仅顺序不同):

cols = list(data1) 
data2 = data2.ix(:, cols) 
           

将某一列'name'变为索引:

data = data.set_index('name')
           

所有行按索引cols重新排序:

data = data.reindex(cols)
           

将索引变为第一列:

data.reset_index(level=0, inplace=True)
           

删除掉一些行后索引重新排序:

data.reset_index(drop=True, inplace=True)
           

基于text_id将data1匹配data2:

data = pd.merge(data1, data2, how='inner', on='text_id')
类似于excel中的vlookup,sql中的join,分为左匹配,右匹配,内匹配和外匹配。
           

统计某一列'ID'的数量(去重后数量):

data['ID'].nunique()
           

新增一列(如新增'relation'):

data['relation'] = 'include'
           

取出某些列(如取出'name','relation'):

data = data[['name','relation']]
           

重命名列'relation'为'entity1'、'name'为'entity2':

data = data.rename(columns={'relation':'entity1', 'name':'entity2'})
           

将多个dataframe拼接在一起:

data = pd.concat([data1, data2, data3]) #列数相同,按列拼接行
data = pd.concat([data1, data2, data3], axis=1) #行数相同,按行拼接列
           

读取dataframe时出错,可考虑添加error_bad_lines=True

data = pd.read_csv(file, sep='t', encoding='utf-8', error_bad_lines=True)
           

对一列的全部值作更改,要善于用apply()函数:

data['values'] = data['values'].apply(lambda x:(x+1))
           

用pandas打开文件时报错,可以先尝试设置read_csv中的参数error_bad_lines=True,如果还是不行,则先用open函数读取,设置errors='ignore',另存为文件,再用pandas读取:

with open(file,'r',encoding='utf-8',errors='ignore') as f:
     data = f.read()
with open(writefile,'w',encoding='utf-8') as fwrite:
     fwrite.write(data)
data = pd.read_csv(writefile, encoding='utf-8')
           

pandas需要显示全部列或全部行,请设置:

pd.set_option('display.max_columns', None)   #显示所有列
pd.set_option('display.max_rows', None)     #显示所有行
#设置value的显示长度为100,默认为50
pd.set_option('max_colwidth',100)
           

pandas随机抽取数据:

data.sample(n=20000)   #随机抽取20000条样本数据
data.sample(frac=0.8)  #随机抽取其中80%的样本数据
           

读取时新增列名:

data = pd.read_csv(file, encoding='utf-8', names=['id', 'name'])
           

读取时头列不作为列名:

data = pd.read_csv(file, encoding='utf-8', header=None)
           

将数据分组后保存为excel和json文件:

#设data有text, label, label_id三列,对label、label_id进行分组:
           

将EXCEL表中同一ID的不同内容合并:

#设用"|"合并
data['label'] = data['label'].apply(x:'|'+ str(x))
concat_data = data.groupby(by='ID').sum()
concat_data['label'] = concat_data['label'].apply(x:x[1:])
concat_data.reset_index(level=0, inplace=True)
concat_data.to_excel(file, index=None)
           

Pymongo导出csv格式数据:

import 
           

持续更新中......