一些常用格式的python处理方法记录(持续更新)
常用的库:
import pandas as pd
import numpy as np
import openxyl
import csv
1. 读取excel文件为DataFrame
df = pd.read_excel('file.xlsx')
2.将DataFrame存为excel文件
df.to_excel('result.xlsx', index=False)
其中,to_excel方法中的index=False表示不将行索引写入Excel文件中。如果需要保留行索引,可以将其设置为True。
3.读取csv文件为DataFrame
df = pd.read_csv('file.csv')
4.将DataFrame存为csv文件
df.to_csv('result.csv', index=False)
index用法同2。
将新的DataFrame续写到已有CSV文件里
df_new.to_csv("existing_file.csv", mode="a", header=False, index=False)
excel与csv之间的转换通过dataframe即可完成。
5.将list依次续写入csv文件
with open('file.csv', 'a', newline='') as file:
writer = csv.writer(file)
for row in data:
writer.writerow(row)
6.将excel某一列的数据保存为list
# 读取Excel文件
data = pd.read_excel(r"file.xlsx")
# 获取第3列数据,保存到列表中
list = data.iloc[:, 2].tolist()
7.读取一个文件夹下的所有csv文件,都转换为dataframe
import os
import glob
folder_path = 'csv_folder'
csv_files = glob.glob(os.path.join(folder_path, "*.csv"))
dataframes = []
for file in csv_files:
df = pd.read_csv(file)
dataframes.append(df)
8.将一个csv文件中的数据行按条件筛选后存入新文件
import csv
#筛选出第三列包含空格的行存入新文件
file_path = "file.csv"
output_file_path = 'output.csv'
with open(file_path, 'r', encoding='utf-8') as csvfile, open(output_file_path, 'w', encoding='utf-8', newline='') as output:
reader = csv.reader(csvfile)
writer = csv.writer(output, lineterminator='\n')#使用换行符作为行终止符
for row in reader:
if ' ' in row[2]:
writer.writerow(row)
9.对csv文件按第一列的值不区分大小写去重
import pandas as pd
# 读取 CSV 文件
input_file = ' input.csv'
df = pd.read_csv(input_file,encoding='gb18030') #内容是中文则用'gb18030'
# 将第一列转换为小写
df[df.columns[0]] = df[df.columns[0]].str.lower()
# 删除具有重复第一列值的行
unique_df = df.drop_duplicates(subset=df.columns[0], keep='first')
#keep='first'表示保留第一个出现的重复行
#若要第一列和第二列值相同的重复行:unique_df = df.drop_duplicates(subset=[df.columns[0], df.columns[1]], keep='first')
# 将结果保存到新的 CSV 文件
output_file = 'output.csv'
unique_df.to_csv(output_file, encoding='gb18030',index=False)
10.对一个excel筛选出没有在另一个excel中出现过的数据
import pandas as pd
# 读取两个 Excel 文件
file1_path = "file1.xlsx"
file2_path = "file2.csv"
# 读取 Excel 文件中的第一个 sheet
df1 = pd.read_excel(file1_path, sheet_name='Sheet1')
df2 = pd.read_csv(file2_path,encoding='gb18030')
matching_column_name = "column" #按哪一列的值进行筛选
# 找到 df1 中与 df2["column_name"] 匹配的行
matching_rows = df1[df1[matching_column_name].isin(df2[matching_column_name])].index
# 删除匹配的行
df1_filtered = df1.drop(matching_rows)
# 将过滤后的 DataFrame 保存到新的 Excel 文件中
output_path = "filtered_file.xlsx"
df1_filtered.to_excel(output_path, index=False)
11.将两个文件按条件合并
file_1 = "file_1.xlsx"
file_2 = "file_2.xlsx"
data_1 = pd.read_excel(file_1)
data_2 = pd.read_excel(file_2)
# 按照文件的前两列进行合并
# 'left'意味着我们保留file_1文件中的所有行,即使在file_2文件中找不到匹配的行
merged_data = pd.merge(data_1.iloc[:, :2], data_2, left_on=data_1.columns[:2].tolist(), right_on=data_2.columns[:2].tolist(), how='left')
# 写入到新的excel文件中
merged_data.to_excel('output_file.xlsx', index=False)