在Pandas中迭代多个文件中的简单计算

时间:2016-06-08 16:56:11

标签: python pandas

以下代码从"值"生成一个总和。 ndarray中的列名为' File1.csv'。

如何将此代码应用于目录中的每个文件,并将总和放在名为Sum.csv的新文件中?

import pandas as pd
import numpy as np

df = pd.read_csv("~/File1.csv")

df["Value"].sum()

非常感谢!

1 个答案:

答案 0 :(得分:2)

使用pandas Panel可能是一个很好的方法,但这是一个基本的python实现。

import os 
import pandas as pd

# Get the home directory (not recommended, work somewhere else)
directory = os.environ["HOME"]
# Read all files in directory, filter out non-csv
files = [os.path.join(directory, f) 
         for f in os.listdir(directory) if f.endswith(".csv")] 
# Make list of tuples [(filename, sum)]
sums =  [(filename, pd.read_csv(filename)["Value"].sum())
         for filename in files ]
# Make a dataframe
df = pd.DataFrame(sums, columns=["filename", "sum"])
df.to_csv(os.path.join(directory, "files_with_sum.csv"))

请注意,内置的python os.listdir()并不像pandas那样理解"~/",所以我们将它从环境贴图中删除。不建议使用主目录,因此这使得该代码的任何采用者都有机会设置不同的路径。