- pandas读取文件
# (1) 有 header
filename='data.csv'
df=pd.read_csv(filename)
#(2) txt(no header)
# 指定列 分隔符:(\t)
filename='data.txt'
df=pd.read_csv(filename,sep='\t',header=None,usecols=[0,1,3,5],names=['','','',''])
- rename
#rid aid
df = df.rename(columns={'rid':'Rid','aid':'Aid'})
- 是否存在用isin函数
df = df[df.Rid.isin(paper_ids, use_hashmap=True)]
- 去重
df = df.drop_duplicates()
- 对含有NaN的行的处理
(1)填充值
# 全部填充0
df.fillna(0)
# 单列填充
df['A'] = df['A'].fillna(0)
(2)删除这行
df = df.dropna()
- 随机抽样数据行
# 随机抽取3610行数据
non_df = non_df.sample(n=3610,random_state=1)
- dataframe 一对多
转化为字典
from itertools import islice
d2_map = {}
with open('./temp1/l2.csv', 'r') as fp:
for line in islice(fp, 1, None):
cols = line.strip().split(',')
pid = int(cols[0])
fname = cols[2]
if d2_map.get(pid, -1) ==-1:
d2_map[pid] = fname
else:
d2_map[pid] = d2_map[pid]+'-'+fname
- 筛选dataframe中某列包含某字符或者字符串的方法:
df3[df3['FieldNames'].str.contains('field')]
- 将字典变成两列的dataframe
n_df = pd.DataFrame.from_dict(c_map, orient='index',columns=['freq'])
n_df = n_df.reset_index()
n_df = n_df.rename(columns={'index':'FieldName'})
- dataframe 按某一列值排序,
n_df.sort_values(axis=0,by='freq', ascending=False, inplace=True)
- python读取csv使用分隔符错误
在使用如下代码时可能会出现错误
import pandas as pd
df = pd.read_csv('abc.txt', sep='||')
解决方法:使用转义字符来进行
df = pd.read_csv('abc.txt', sep = '\|\|')