【发布时间】:2021-04-06 02:13:19
【问题描述】:
我有 csv 文件(假设 = 30),我想使用相应的值计算所有 30 个 csv 的平均值并创建一个新的 output.csv 文件。
示例 csv 文件:(我有 13 列和 16 行)
| Dataset | VALUE1 | VALUE2 |
|:---- |:------:| -----:|
| Name1 | 2.4 | 4.2 |
| Name2 | 3.5 | 9.3 |
| Name3 | 4.6 | 11.5 |
现在我有 30 个这样的 csv 文件,其中第一行是标题,第一列也包含字符串名称。
我想要做的是取 30 个 csv 文件的所有 30 个 csv 文件(例如,添加 value1,name1)的平均值,并在输出文件中平均这 30 个值,这应该针对每个位置进行(除了肯定的第一行和第一列)因为它们包含字符串值。
我尝试过使用 pandas 和 numpy,但直到现在都没有运气。
我的代码:
import pandas as pd
from pathlib2 import Path
import numpy as np
root = '../Dataset'
#print(tool_files_path)
file_names_list = []
ls=[]
entries = Path(root)
for entry in entries.iterdir():
if entry.is_dir():
for file in entry.iterdir():
if file.is_file():
if file.name == 'summary_x.csv':
file_names_list.append(file)
#print(file)
#file = pd.read_csv(file)
#print file
#all_files_default = pd.concat(file))
print file_names_list
df_final = pd.DataFrame()
range = [i for i in range(1,13)]
for file_name in file_names_list:
df = pd.read_csv(file_name, skiprows=0, usecols=range)
print df
df_final = df_final.add(df.reset_index(), fill_value=0)
#print df_final
#print os.getcwd()
df_final.to_csv('output.csv')
编辑:使用更新的代码,添加了数据框,但列的索引与原始文件中不同,并且有空单元格,我想是因为0.0 添加了很多次
【问题讨论】:
-
您的代码不完整?为什么不将文件导入数据框并在获取文件名列表时执行计算?
-
@C.Cooney。我使用 pd.concat() 尝试了许多代码,但它在输出中显示
NaN尽管 csv 文件中的所有索引都包含值 -
您可能需要研究 pandas “reset_index()”,这是新 NaN 列的常见原因。
标签: python pandas numpy average