Объединить строки
Есть файл csv:
0,10,15,14
0,12,17,17
1,14,19,15
1,11,12,13
Я его считываю, и даю названия колонкам
data = pd.read_csv('data.csv', names=['name' + str(i) for i in range(3)])
res = dataset.groupby("name0").agg("??")
res_dict = res.T.to_dict("list")
Как мне его сгруппировать чтобы я получил:
x = {
"0": [[10, 15, 14], [12, 17, 17]],
"1": [[14, 19, 15], [11, 12, 13]]
}
Не обязательно через groupby, можно взять уникальные значения - 0 и 1, и сделать по ним выборку. Но я не знаю как.
Ответы (4 шт):
Автор решения: CrazyElf
→ Ссылка
Python - прекрасный язык, вы можете в качестве аггрегатора указать даже коллекцию:
dataset.groupby("name0").agg(list)
Хотя это не весь ответ, на выходе будет DataFrame, в словарь ещё нужно будет перевести.
Автор решения: MaxU
→ Ссылка
df = pd.read_csv("data.csv", header=None).add_prefix("name")
res = [{a: b.drop(columns="name0").to_numpy().tolist()} for a,b in df.groupby("name0")]
результат:
In [109]: res
Out[109]: [{0: [[10, 15, 14], [12, 17, 17]]}, {1: [[14, 19, 15], [11, 12, 13]]}]
Автор решения: Leonid
→ Ссылка
import csv
d = {}
with open("dataset.csv") as f:
reader = csv.reader(f, delimiter=',')
for line in reader:
k, v = line[0], line[1:]
d[k] = d.setdefault(k, []) + [v]
print(d)
Автор решения: strawdog
→ Ссылка
data = pd.read_csv('data.csv', header=None)
res={}
[res.setdefault(str(x[0]),[]).append(list(x[1:])) for x in data.values]
res:
{'0': [[10, 15, 14], [12, 17, 17]], '1': [[14, 19, 15], [11, 12, 13]]}