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

时间:2018-03-09 13:02:02

标签: python pandas sorting

我是Python世界的新手,我正在与基本操作作斗争。 我有大量名为inlet_10_00_00.csvinlet_10_00_01.csvinlet_10_00_02.csv等的文件,对应于不同的时间inlet_Hour_minute_sec。 内容如下:

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

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

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

...

我想做接下来的两个操作:

1 /为每个文件添加t列,0的值为inlet_10_00_001的值为inlet_10_00_01,等等。添加列{{使用t工具可以非常轻松地使用单个文件。但是如何将其添加到所有文件中?

cols

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

t

任何想法,如何进行?

1 个答案:

答案 0 :(得分:1)

以下步骤可帮助您达到预期效果。

说明:

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()
相关问题