Python pandas Конвертировать столбец в заголовок столбца - PullRequest
0 голосов
/ 05 июля 2018

У меня есть список dict, содержащий x и y. Я хочу сделать х в качестве индекса и у в качестве заголовков столбцов. Как мне это сделать? Спасибо

import pandas

pt1 = {"x": 0, "y": 1, "val": 3,}
pt2 = {"x": 0, "y": 2, "val": 6,}

lst = [pt1, pt2]
print(lst)

# [{'x': 0, 'y': 1, 'val': 3}, {'x': 0, 'y': 2, 'val': 6}]

df = pandas.DataFrame(lst)
print(df)

#    val  x  y
# 0    3  0  1
# 1    6  0  2

Как я могу конвертировать df в этот формат? Спасибо.

#   1 2
# 0 3 6

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Я могу думать только об использовании двух циклов for. Есть ли лучший способ? Спасибо.

idx = df.x.unique()
cols = df.y.unique()
lst2 = []
for i in idx:
  struc = {"x": i,}
  for c in cols:
    dfval = df.loc[(df.x==i) & (df.y==c)]
    v = dfval.val.values[0]
    struc[c] = v
  lst2.append(struc)
df2 = pandas.DataFrame(lst2).set_index("x")
0 голосов
/ 05 июля 2018

Вы можете использовать df.pivot:

pt1 = {"x": 0, "y": 1, "val": 3,}
pt2 = {"x": 0, "y": 2, "val": 6,}
pt3 = {"x": 1, "y": 1, "val": 4,}
pt4 = {"x": 1, "y": 2, "val": 9,}

lst = [pt1, pt2, pt3, pt4]

df = pd.DataFrame(lst)

>>> df
   val  x  y
0    3  0  1
1    6  0  2
2    4  1  1
3    9  1  2


>>> df.pivot('x', 'y', 'val')

y  1  2
x      
0  3  6
1  4  9
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...