gpt4 book ai didi

pandas - 将带有计算的列添加到多个 CSV

转载 作者:行者123 更新时间:2023-12-04 08:35:07 25 4
gpt4 key购买 nike

我对 Python 非常熟悉,并且在尝试自动执行某些计算时遇到了一些问题。
我知道这可以添加一个名为“返回”的新列,该列将当前的“值”除以 csv 之前的“值”:

import pandas as pd
import numpy as np
import csv
a = pd.read_csv("/Data/a_data.csv", index_col = "time")
a ["Returns"] = (a["value"]/a["value"].shift(1) -1)*100
但是,我有很多这样的 CSV。我需要在将它们合并在一起之前进行此计算。所以我希望写一些东西来循环遍历所有 CSV 并进行计算并添加列,但显然这是不正确的,因为我收到语法错误:
import pandas as pd
import numpy as np
import csv
a = pd.read_csv("/Data/a_data.csv", index_col = "time")
b = pd.read_csv("/Data/b_data.csv", index_col = "time")
c = pd.read_csv("/Data/c_data.csv", index_col = "time")
my_lists = ['a','b','c']

for my_list in my_lists:
{my_list}["Returns"] = ({my_list}["close"]/{my_list}["close"].shift(1) -1)*100
print(f"Calculating: {my_list.upper()}")
我确信有一种简单的方法可以做到这一点,但我在 Python 教育中还没有达到过,因此我们将不胜感激!

最佳答案

  • 假设“关闭”和“时间”是在 中定义的字段每个对于您的 csv 文件,您可以定义一个函数来读取每个文件,进行移位并返回一个数据帧:

  • def your_func(my_file):  # this function takes a file name as an argument. 
    my_df = pd.read_csv(my_file, index_col = "time") # The function reads its content into a data frame,
    my_df["Returns"] = (my_df["close"]/{my_df}["close"].shift(1) -1)*100 # makes the calculation
    return my_df #and returns it as an output.
  • 然后作为主要代码,您从带有 glob 包的文件夹中收集所有 csv 文件。使用上述函数,您可以在计算完成后为每个文件构建一个数据框。

  •     import glob  
    path =r'/Data/' # path to the directory where you have the csv files
    filenames = glob.glob(path + "/*.csv") # grab the csv files names using glob package with path+all csv files present
    for filename in filenames: # loop into all csv files names in the list of csv files present in the directory
    df= your_func (filename) # call the function, defined above block of code, that reads the file from its name as argument, then makes the calculation and returns it.
    print (df)
    上面是显示结果的数据框的打印件;我不确定您打算用 upper 做什么(我不认为这是数据框上的函数)。
    最后,这将返回独立的数据帧,并在其他或最终转换之前完成计算。

    关于pandas - 将带有计算的列添加到多个 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64838310/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com