使用 python 将宽格式 csv 转换为长格式 csv
Convert wide format csv to long format csv using python
我在将我的 csv 数据从 table 宽格式 csv 转换为 python 中的长格式 csv 时遇到了一些麻烦。目前它看起来像这样:
Time Temp1 Temp2 Temp3 Temp4 Temp5
00 21 32 33 21 23
10 34 23 12 08 23
20 12 54 33 54 55
现在我想把这个数据转换成长数据格式。像这样:
00 temp1 21
00 temp2 32
00 temp3 33
00 temp4 21
00 temp5 23
10 temp1 34
10 temp2 23
10 temp3 12
10 temp4 08
10 temp5 23
20 temp1 12
20 temp2 54
.
.
.
任何关于如何解决 python 中此类问题的帮助都将非常有帮助。
您可以使用 csv 模块,但逻辑是相同的。
with open("in.csv") as f,open("out.csv","w") as out:
headers = next(f).split()[1:] # keep headers/Time Temp1 Temp2 Temp3 Temp4 Temp5
for row in f:
row = row.split()
time = row[0]
data = zip(headers, row[1:]) # match correct temp to row item
for a, b in data:
out.write("{} {} {}\n".format(time,a.lower(),b))
print("{} {} {}".format(time,a.lower(),b))
00 temp1 21
00 temp2 32
00 temp3 33
00 temp4 21
00 temp5 23
10 temp1 34
10 temp2 23
10 temp3 12
10 temp4 08
10 temp5 23
20 temp1 12
20 temp2 54
20 temp3 33
20 temp4 54
20 temp5 55
out.csv:
00 temp1 21
00 temp2 32
00 temp3 33
00 temp4 21
00 temp5 23
10 temp1 34
10 temp2 23
10 temp3 12
10 temp4 08
10 temp5 23
20 temp1 12
20 temp2 54
20 temp3 33
20 temp4 54
20 temp5 55
尝试使用 pandas Dataframe 来存储 csv 文件的数据。它提供了一个内置函数 pandas.melt
,这对您的问题很有用。
这是文档的 link。
我在将我的 csv 数据从 table 宽格式 csv 转换为 python 中的长格式 csv 时遇到了一些麻烦。目前它看起来像这样:
Time Temp1 Temp2 Temp3 Temp4 Temp5
00 21 32 33 21 23
10 34 23 12 08 23
20 12 54 33 54 55
现在我想把这个数据转换成长数据格式。像这样:
00 temp1 21
00 temp2 32
00 temp3 33
00 temp4 21
00 temp5 23
10 temp1 34
10 temp2 23
10 temp3 12
10 temp4 08
10 temp5 23
20 temp1 12
20 temp2 54
.
.
.
任何关于如何解决 python 中此类问题的帮助都将非常有帮助。
您可以使用 csv 模块,但逻辑是相同的。
with open("in.csv") as f,open("out.csv","w") as out:
headers = next(f).split()[1:] # keep headers/Time Temp1 Temp2 Temp3 Temp4 Temp5
for row in f:
row = row.split()
time = row[0]
data = zip(headers, row[1:]) # match correct temp to row item
for a, b in data:
out.write("{} {} {}\n".format(time,a.lower(),b))
print("{} {} {}".format(time,a.lower(),b))
00 temp1 21
00 temp2 32
00 temp3 33
00 temp4 21
00 temp5 23
10 temp1 34
10 temp2 23
10 temp3 12
10 temp4 08
10 temp5 23
20 temp1 12
20 temp2 54
20 temp3 33
20 temp4 54
20 temp5 55
out.csv:
00 temp1 21
00 temp2 32
00 temp3 33
00 temp4 21
00 temp5 23
10 temp1 34
10 temp2 23
10 temp3 12
10 temp4 08
10 temp5 23
20 temp1 12
20 temp2 54
20 temp3 33
20 temp4 54
20 temp5 55
尝试使用 pandas Dataframe 来存储 csv 文件的数据。它提供了一个内置函数 pandas.melt
,这对您的问题很有用。
这是文档的 link。