文章目录
其实算不上什么奇技淫巧,主要是自己没用过没见过的,或者用的不熟的。
主要提供个方法和角度,具体参数和具体操作都可以自己定制。
DataFrame批量修改某一列
df['a'] = df['a'].map(lambda x: x*2)
ls = [] # 存放修改后的数据
df.loc[:,('股票代码')] = ls
DataFrame添加一空列
df['table'] = ''
DataFrame将空值置为0
df['table'].fillna(0, inplace=True)
DataFrame删除空值
df.dropna(axis="index", how="any", inplace=True) # 有为空的值,则丢弃
df.reset_index(drop=True, inplace=True) # 重置索引
DataFrame随机取样
random = df.sample(n=2000, replace=False) # 不放回抽取
DataFrame 访问/修改 指定行
df.loc[i, 'a'] # 访问第i行的'a'元素
df.loc[i, 'a':'g'] # 访问第i行的'a'到'g'元素
df.loc[i, 'a':'g'] = new_info # 修改指定行
df.loc[index:index, ('table_1', 'table_2', 'table_3')] = [info_1, info_2, info_3] # 修改同一行的多列数据
dataframe直接写入数据库
import pandas as pd
from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://root:你的密码@localhost:3306/你的数据库名称')
con = engine.connect() # df是已有的Dataframe类型数据
df.to_sql('example', con=engine, index=False, if_exists='replace')
- con:数据库配置
- index:是否将df的index单独写到一列中
- if_exists: 三个模式:fail,若表存在,则不输出;replace:若表存在,覆盖原来表里的数据;append:若表存在,将数据写到原表的后面。默认为fail。
pandas遍历csv每一行
df = pd.read_csv(r'D:\Export_Output.csv')
for index, row in df.iterrows():
print(row['info_1'], row['info_2']) # 遍历指定行
DataFrame转list
df_lilst = df.values.tolist()
txt转csv
dict_data={}
ls = [] # 总列表
ls_name = [] # 表头
with open(path_txt,'r')as df:
for line in df:
if line.count('\n') == len(line): # 换行符跳过
continue
for kv in [line.strip().split('\t')]:
# print(kv)
ls.append(kv)
for i in ls[0]:
ls_name.append(i)
frame = DataFrame(ls,columns=ls_name) # 转为dataframe
frame.to_csv('file_out0.csv',encoding='gbk',index=False,header=False)
删除文件最后一行
for root, dirs, files in os.walk(path):
for name in files:
all_path = os.path.join(path, name) # 文件总路径
w = open(all_path, 'w')
w.writelines([item for item in lines[:-1]]) # 删除最后一行
w.close()
删除文件第一行
for root, dirs, files in os.walk(path):
for name in files:
all_path = os.path.join(path, name) # 文件总路径
readFile = open(all_path)
lines = readFile.readlines()
lines = open(all_path).readlines()
open(all_path, 'w').writelines(lines[1:]) # 删除第一行
进度条显示
count += 1
print("\r当前进度: {:.2f}%".format(count * 100 / length), end="") # 进度条显示