批量修改csv文件列数据,并存储为新csv文件

任务要求:批量修改csv文件列数据,并存储为新csv文件

1.读取csv文件

#pandas库用来处理csv文件,os库用来批量读取文件
import pandas as pd
import os

2.定义csv文件处理函数

#input_file_path为处理前文件存储路径,input_numeric为需要处理的固定列名,output_file_path为处理后文件存储路径,m,n为列中字符串切片位置
def extract_all(input_file_path,input_numeric,output_file_path,m,n):
    df = pd.read_csv(input_file_path,encoding='utf-8')
    print(df)
    input_numeric =df[input_numeric]
    print(input_numeric)
    
    l = m+n
    for i in range(0,len(input_numeric)):
        output=str(input_numeric[i])
        if len(output)>l:
            output=output.replace(output[m:-n],'*'*len(output[m:-n]))
        else:
            output=output.replace(output[:-1],'*'*len(output[:-1]))
    #替换某一行、某一列使用.at
        input_numeric.at[i]=output
    print(input_numeric)
    #存储为新文件,index=False表示不添加索引列
	df.to_csv(output_file_path,index=False)

3.批量处理文件夹中的文件

x=0
COOKED_FOLDER = './处理前'  # 文件夹的地址
dirs = os.listdir(COOKED_FOLDER)
df=pd.read_excel('file.xlsx')
# 输出所有文件和文件夹
for file in dirs:
    file=file[:-4]
    print(file)
    input_file_path='处理前/{}.csv'.format(file)
    output_file_path='处理后/{}.csv'.format(file)
    # print(input_file_path)
    l=0
    # print(len(df['A0']))
    for i in range(len(df['A0'])):
        if df['A0'][i]==file:
            l+=1
            x+=1
        print(l)
    if x<=l:
        for i in range(0,l):
            input_numeric=df['A1'][i]
            m=df['A2'][i]
            n=df['A3'][i]
            extract_all(input_file_path, input_numeric, output_file_path, m, n)
            input_file_path='处理后/{}.csv'.format(file)
    else:
        print(x)
        for i in range(0,l):
            input_numeric=df['A1'][x+i-l]
            print(input_numeric)
            m=df['A2'][x+i-l]
            n=df['A3'][x+i-l]
            extract_all(input_file_path, input_numeric, output_file_path, m, n)
            input_file_path='处理后/{}.csv'.format(file)

你可能感兴趣的:(数据分析,python,pandas,数据分析)