如何计算csv文件中值?

2mbi3lxu  于 2023-02-06  发布在  其他
关注(0)|答案(2)|浏览(169)

在我展示的代码中,它读取一个文件夹中的csv文件,并在另一个文件夹中打印它们。在每个文件夹中,csv包含两列,这两列是在定义 Dataframe 时选择的。在列f中,我需要计算该值超过50.025的次数,并将其写入某列
代码:

import pandas as pd   
import numpy as np       
import glob   
import os  
all_files = glob.glob("C:/Users/Gamer/Documents/Colbun/Saturn/*.csv")   

file_list = []   
for i,f in enumerate(all_files):   
    df = pd.read_csv(f,header=0,usecols=["t","f"])
    df.apply(lambda x: x['f'] > 50.025, axis=1)
    df.to_csv(f'C:/Users/Gamer/Documents/Colbun/Saturn2/{os.path.basename(f).split(".")[0]}_ext.csv')
bxfogqkk

bxfogqkk1#

将其存储在某个列中是不合乎逻辑的...因为它是整个表的摘要...不特定于任何行。

df = pd.read_csv(f,header=0,usecols=["t","f"])
how_many_times= len(   df[df['f'] > 50.025]   )

# you may store it in some unique column but it still doesnt make sense

df['newcol']=how_many_times
3ks5zfa0

3ks5zfa02#

要根据特定过滤器输出列中的出现次数,并将其添加到另一列的每一行,只需执行以下操作:
df['cnt'] = df[df['f'] > 50.025]['f'].count()
如果您需要使用该计数来执行计算,最好将其存储在变量中,然后在使用所述变量时执行计算,而不是将其存储在 Dataframe 中的整个列中。
此外,我可以从您对问题的评论中看到,您还希望在输出到CSV时删除索引,因此您需要将index=False添加到df.to_csv()调用中。
您的代码应类似于以下内容:

import pandas as pd   
import numpy as np       
import glob   
import os  
all_files = glob.glob("C:/Users/Gamer/Documents/Colbun/Saturn/*.csv")   

file_list = []   
for i,f in enumerate(all_files):   
    df = pd.read_csv(f,header=0,usecols=["t","f"])
    df['cnt'] = df[df['f'] > 50.025]['f'].count()
    df.to_csv(f'C:/Users/Gamer/Documents/Colbun/Saturn2/{os.path.basename(f).split(".")[0]}_ext.csv', index=False)

相关问题