在python中转换数据表格式
假设我有一个python表格,格式如下:在python中转换数据表格式,python,numpy,Python,Numpy,假设我有一个python表格,格式如下: id1 V1 100 id1 V2 200 id1 V3 0 id2 V1 300 id2 V2 400 id2 V3 1 我想转换成这种格式: id1 100 200 0 id2 300 400 1 V1、V2和V3是变量名,我不需要保留它们。我只需要ID和每个变量的值。变量的数量(Vs)也是未知的,但变量的顺序总是相同的。我正在寻找一种更聪明的转换方式,而不是循环。有内置的功能吗 没有其他内置方法,但您可以使用dict进行分组: from
id1 V1 100
id1 V2 200
id1 V3 0
id2 V1 300
id2 V2 400
id2 V3 1
我想转换成这种格式:
id1 100 200 0
id2 300 400 1
V1、V2和V3是变量名,我不需要保留它们。我只需要ID和每个变量的值。变量的数量(Vs)也是未知的,但变量的顺序总是相同的。我正在寻找一种更聪明的转换方式,而不是循环。有内置的功能吗 没有其他内置方法,但您可以使用dict进行分组:
from collections import defaultdict
d = defaultdict(list)
s = """id1 V1 100
id1 V2 200
id1 V3 0
id2 V1 30
id2 V2 400
id2 V3 1"""
for a, _, c in map(str.split, s.splitlines()):
d[a].append(c)
print(["{},{}".format(k,",".join(v)) for k,v in d.items()]
['id2,30,400,1', 'id1,100,200,0']
如果希望输出对齐,可以执行以下操作
如果要维护订单,请使用OrderedICT:
from collections import OrderedDict
d = OrderedDict()
s = """id1 V1 100
id1 V2 200
id1 V3 0
id2 V1 30
id2 V2 400
id2 V3 1"""
for a, _, c in map(str.split, s.splitlines()):
d.setdefault(a, []).append(c)
如果它位于文件中,则可以使用csv库对其进行解析:
import csv
from collections import OrderedDict
d = OrderedDict()
with open("in.txt") as f:
for k, _, v in csv.reader(f, delimiter=" "):
d.setdefault(k, []).append(v)
OrderedDict输出:
OrderedDict([('id1', ['100', '200', '0']), ('id2', ['30', '400', '1'])])
任何内置将使用循环。不