如何从文件夹读取文件并将数据透视应用于每个文件并将数据透视图写入文件夹?

时间:2018-09-27 15:13:48

标签: python python-3.x pandas pivot-table

我有一个带csv文件的文件夹,其中带有表。

我已经确认了我的数据透视功能,下面的代码是我所需要的:

cols = df.columns.difference(['FieldTitle','Value']).tolist()

pivoted_df = pd.pivot_table(df.fillna('missing'), index=cols, columns='FieldTitle', values='Value', aggfunc='first').reset_index().replace('missing', np.nan)

在将pivoted_df写入另一个文件夹的同时,如何将这两行代码应用于文件夹中的每个文件?

我尝试了这段代码,但无法让熊猫读取文件来进行操作:

import os
import pandas as pd
import numpy as np

directory = os.path.join('~/Desktop/folder_path')
for root,dirs,files in os.walk(directory):
    for file in files:
       if file.endswith(".csv"):
           f=open(file, 'r')
           for i in f:
               df = pd.read_csv(i)
               cols = df.columns.difference(['FieldTitle','Value']).tolist()
               pivoted_df = pd.pivot_table(df.fillna('missing'), index=cols, \
                                           columns='FieldTitle', values='Value', \
                                           aggfunc='first').\
                                           reset_index().replace('missing', np.nan)

               pivoted_df.to_csv('~/Desktop/folder_path/file_name_{}'.format(file))

           f.close()

1 个答案:

答案 0 :(得分:1)

对于Windows,您需要双'\',因此您的路径应为“ C:\\ Users \\ Person \\ Desktop \\ test”

打开文件时,需要组合文件名和路径。

for root,dirs,files in os.walk(directory):
    for file in files:
       if file.endswith(".csv"):
           f=open(file, 'r')

file变量仅保留文件名,而不包含完整路径。并且,由于文件不在当前工作目录中,因此需要路径。解决方案是将其更改为:

for root,dirs,files in os.walk(directory):
    for file in files:
       if file.endswith(".csv"):
           f = open(os.path.join(directory, file))

os.path.join()组合目录和文件名以获取完整路径。

相关问题