从csv文件中读取数据并进行计算并保存到新的csv文件(熊猫)中

时间:2019-07-23 16:54:17

标签: python pandas

这可能是一个非常简单的问题,但我找不到解决方案。 我有三个具有特定名称的csv文件,比方说(A,B,C),每个文件都有一个列称为得分。读取每个csv文件,并通过诸如my_func()之类的函数计算相应的特征,然后将每个文件保存在新的csv文件中,其文件名和对应的特征值由my_func()计算。所需的输出如下所示:

user_id      sd 
A           output of my_func()
B           output of my_func()
C           output of my_func()

我遍历每个文件以读取数据,然后使用my_func()函数进行计算,然后从该函数返回值,并在每次迭代中将这些值添加到sd和user_id列中。

这里是我的代码的片段:

allFiles = glob.glob(path)
data_new = pd.DataFrame(columns=['sd','user_id'])

def my_funct(data, user_id):
   computing sd ....
   data_new.sd = value of sd
   data_new.user_id = value of file name

   return sd

for file_name in allFiles:
       data_ = pd.read_csv(filename)
       sd, user_id = my_function(data_, user_id_)

使用此解决方案,我得到的函数的最后一个值如下:

user_id       sd   
C           output of my_func()

1 个答案:

答案 0 :(得分:0)

在my_func中,您似乎正在覆盖data_new中的单个条目。代替

data_new.sd = value of sd
data_new.user_id = value of file name

尝试使用append方法,如下所示:

data_new = data_new.append({'sd' : VALUE OF SD , 'user_id' : VALUE OF FILE NAME}, ignore_index=True)

此处的其他文档:

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.append.html

这里是一个示例:

import pandas as pd

data_new = pd.DataFrame(columns=['sd','user_id'])
print(data_new)
data_new = data_new.append({'sd' : 'test' , 'user_id' : 'working'}, ignore_index=True)
print(data_new)
data_new = data_new.append({'sd' : 'test2' , 'user_id' : 'still working'}, ignore_index=True)
print(data_new)

data_new.to_csv("U:\Random\pandasTest.csv")