Arrays 修改已存储在阵列中的多个csv文件

Arrays 修改已存储在阵列中的多个csv文件,arrays,python-3.x,csv,Arrays,Python 3.x,Csv,我设法将500个csv文件存储到阵列中,每个csv都有列: time_s|hbaro_m|hdot_1_mps|hralt_m|lon_rad|lat_rad|tas_mps|gs_mps|wow|chi_rad|lap_te_pos| | | | | | | | | | | 其中,每列大约有5k到10k行数据 使用此代码 # import necessa

我设法将500个csv文件存储到阵列中,每个csv都有列:

time_s|hbaro_m|hdot_1_mps|hralt_m|lon_rad|lat_rad|tas_mps|gs_mps|wow|chi_rad|lap_te_pos|
      |       |          |       |       |       |       |      |           |          | 
其中,每列大约有5k到10k行数据

使用此代码

# import necessary libraries
import pandas as pd
import os
import glob
   
# use glob to get all the csv files 
# in the folder
path = os.getcwd()
csv_files = glob.glob(os.path.join(path, "*.csv"))

# loop over the list of csv files
df =  [0 for i in range(500)] 
for i in range (500):
    # read the csv file
    df[i]= pd.read_csv(csv_files[i])
我得到的输出是一个数组,其中每个数组都有每个csv的数组(我不知道如何解释)

我想稍后修改和交换列(
lon_rad
lat_rad
),这可能吗?如何实现


提前感谢

具体来说,您的输出是

如果目录中的csv文件少于500个,代码就会中断

import pandas as pd
from pathlib import Path


def swap_columns(df col1='lon_rad', col2='lat_rad'):
    'Return a DataFrame with col1 and col2 swapped'
    columns = df.columns.to_list()
    try:
        col1_idx = columns.index(col1)
        col2_idx = columns.index(col2)
        # swap the column names
        columns[col1_idx], columns[col2_idx] = columns[col2_idx], columns[col1_idx]
    except ValueError:
        pass  # one of the columns is not found, maybe warn?
    return df[columns]


csv_files = Path.cwd().glob('*.csv')
# read all csv files
dfs = [pd.read_csv(path) for path in csv_files]
# or read at most 500 csv files if you really want
# dfs = [pd.read_csv(path) for _, path in zip(range(500), csv_files)
dfs = [swap_columns(df) for df in dfs]
我将变量名更改为
dfs
,以显示它是多个数据帧的列表,而不仅仅是一个数据帧

注意:这会将所有csv文件读入内存,然后交换列。如果您只想交换csv文件中的列,我会使用生成器而不是列表,这样您就可以一次一个地操作每个文件。这样,csv数据清理步骤不会占用大量内存,可以在小型计算机上完成:

# a generator of tuples (Path, DataFrame)
dfs = ((path, pd.read_csv(path)) for path in csv_files)
dfs = ((path, swap_columns(df)) for path, df in dfs)
for path, df in dfs:
    df.to_csv(path)
您的其他操作可以编写为类似swap_列的函数,并以相同的方式映射到列表上


PS此代码将创建的索引列添加到写入的csv中。。考虑使用<代码>索引x> COL >代码>参数> Read Syvv < /Cult> < P> >,您想稍后将结果保存到CSV中,还是只在数组中进行修改?在最后一个例子中,您可以制作如下内容:
df[i]=df[i][['col4','col3']]]
# a generator of tuples (Path, DataFrame)
dfs = ((path, pd.read_csv(path)) for path in csv_files)
dfs = ((path, swap_columns(df)) for path, df in dfs)
for path, df in dfs:
    df.to_csv(path)