将列添加到多个文件中,合并到一个文件中并对i进行排序

2024-09-23 04:34:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python世界的新手,我正在与基本操作作斗争。 我有大量名为inlet_10_00_00.csvinlet_10_00_01.csvinlet_10_00_02.csv等的文件,它们对应于不同的时间点(小时)分钟(秒)。 内容如下所示:

x, y, z, temperature, pressure, u, v, w, k , omega

0, 0, 0, 295, 100001, ...

0, 1, 1, 296, 100002, ...

...

我想做下面两个操作:

1/为每个文件添加一列t,其中inlet_10_00_00的值为0inlet_10_00_01的值为1,等等。使用cols工具为单个文件添加一列t非常简单。但是如何将其添加到所有文件中

data=pd.read_csv('C:/myPath/inlet_10_00_00.csv',sep=',',skiprows=7)
data["t (s)"]="0"
cols=list(data.columns.values)
cols=  cols[0:3]+ cols[-1:] + cols[3:10]
cols
newdata=data[cols]
newdata.to_csv('out.csv', index=False)

2/我想将所有这些文件合并到一个文件中,并按t变量对其进行排序。我应该以这样的格式结束: x、 y,z,t,温度,压力,u,v,w,k,ω

0, 0, 0, 0, 295,100001, ....   this part comes from inlet_10_00_00.csv

0, 1, 1, 0, 296,100002, ...

0, 0, 0, 1, 292,100008, ...    this part comes from inlet_10_00_01.csv

0, 1, 1, 1, 294,100012, ...

有什么想法,怎么做


Tags: 文件csvfromdata时间世界this基本操作
1条回答
网友
1楼 · 发布于 2024-09-23 04:34:44

以下步骤将帮助您实现预期结果

说明:

1.步骤1:这里我们将列出当前目录中的文件名。然后,我们将对文件名进行排序,以确保文件按所需顺序循环

2.第2步:这里,我们将遍历在第1步中创建的列表,读取一个文件,添加一列,并用相同的名称保存数据帧

3.第3步:最后,使用pd.concat将所有文件连接到一个数据帧中,并按t对数据帧进行排序

# Step 1
path = 'C:/myPath/'
files = sorted(os.listdir(path)) # sorting will ensure _001, 002, 003 will bein sequence


## Step 2 
for ix, file in enumerate(files,1):
    df = pd.read_csv(file, skiprows=7) ## assuming you want to skip first 7 rows in every file
    df['t'] = ix
    df.to_csv(os.path.join(path, file), index=False)

## Step 3
master_df = pd.concat([pd.read_csv(file) for file in files])
master_df = master_df.sort_values('t').reset_index()

相关问题 更多 >