在csv文件python中对两行数据进行排序

iyr7buue  于 2023-01-28  发布在  Python
关注(0)|答案(2)|浏览(136)

我在第4行和第5行中有两行数据。第4行是数据的标题,第5行是实际数据。我想继续下去,并以任何格式对它们进行排序。我对python完全是新手,所以我甚至不知道从哪里开始。这是一个csv文件,我也想输出一个csv文件。数据如下所示:
| A类|B|C级|D级|A类|B|C级|D级|A类|B|C级|D级|
| - ------|- ------|- ------|- ------|- ------|- ------|- ------|- ------|- ------|- ------|- ------|- ------|
| 无|1个|第二章|三个|四个|五个|六个|七|八个|九|十个|十一|
如果可能,我希望数据看起来像这样:
| A类|B|C级|D级|
| - ------|- ------|- ------|- ------|
| 无|1个|第二章|三个|
| 四个|五个|六个|七|
| 八个|九|十个|十一|
因此,我想按标题进行排序,但由于该行不是标题行,我不知道该怎么做。同样,标题“A”“B”“C”“D”位于第4行,数据0、1、2、3...位于第5行。如有任何帮助,我们将不胜感激。

lrpiutwd

lrpiutwd1#

可以使用pandas读取csv文件,然后使用pandas.DataFrame对数据进行排序。

import pandas as pd

df = pd.read_csv('file.csv', header=None)
df.columns = df.iloc[3]
df = df.sort_values(by=['A', 'B', 'C', 'D'])
df.to_csv('output.csv', index=False)
oxosxuxt

oxosxuxt2#

你可以使用字典来存储原始数据,把第一行作为字典的关键字,然后你可以使用panda来创建你的最终csv文件,比如:

from collections import defaultdict
import pandas

# read the two rows 
with open('data.txt') as ifile:
    headers = [name.strip() for name in ifile.readline().split(",")]
    values = [int(value.strip()) for value in ifile.readline().split(",")]

# use a dictionary to store the data, using the 
# names in firt row as dictionary keys
dd = defaultdict(lambda: [])
for name, val in zip(headers, values):
    dd[name].append(val)

# use pandas package to create the csv 
data_frame = pandas.DataFrame.from_dict(dd)
data_frame.to_csv("final.csv", index=False)

我假设您的data.txt文件包含:

A,B,C,D,A,B,C,D,A,B,C,D
0,1,2,3,4,5,6,7,8,9,10,11

相关问题