簡體   English   中英

多個文件作為 function 輸入

[英]Multiple files as function input

我有幾個 csv 名稱序列的文件,其中數字發生變化

我需要調用 function 一次獲取所有這些文件

我嘗試按以下方式進行:

names = ["orm_x_CXY_" + str(i) + ".csv" for i in range(0,40)]

function定義如下

import pandas as pd
import numpy as np
def getBpms(filename, ipage):

    twiss = pd.read_csv(filename, skiprows=1,
                        names=['s_pos', 'beta_x', 'beta_y', 'dx', 'dy', 'closed_orbitx', 'closed_orbity', 'element_type', 'elements_strength'],
                        header=None, index_col=0)

    s = twiss.s_pos
    x = twiss.closed_orbitx
    y = twiss.closed_orbity
    etype = twiss.element_type
    xs = []
    ys = []
    i=0
    for i in range(len(etype)):
        if(etype[i] == 'BPM'):
           xs.append('BPM'+str(i))
           ys.append('BPM'+str(i))


    return np.array(xs), np.array(ys)

當我嘗試使用“名稱”作為輸入調用 function 時,如下所示

x, y =getBpms(names, 0)

我似乎陷入了無限循環,沒有顯示 output。

您需要迭代for filename in names:使用“pd.read_csv()”,如果您嘗試將多個 csv 連接成一個 DataFrame,那么您可以查看以下問題: Import multiple csv files into pandas and concatenate into one DataFrame

import pandas as pd
import glob

path = r'C:\DRO\DCL_rawdata_files' # use your path
all_files = glob.glob(path + "/*.csv")

li = []

for filename in all_files:
    df = pd.read_csv(filename, index_col=None, header=0)
    li.append(df)

frame = pd.concat(li, axis=0, ignore_index=True)

我希望這是你的意思。

您應該在 getBpms 中創建一個循環getBpms以單獨讀取文件 pandas 沒有多個文件讀取屬性。

    ...
    for file_name in filename_list:
       twiss = pd.read_csv(...)
    ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM