我有一个带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()
答案 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()
组合目录和文件名以获取完整路径。