Панды: буфер имеет неправильное количество измерений

Ниже приведен мой код (только макеты чисел):

import pandas as pd 
d = {'x' : [1,4,6,9],
     'y' : [1,4,6,8]}
df = pd.DataFrame(d)
ct = pd.concat([df.x,
                pd.cut(df.y, bins=2)], axis=1)
gp = ct.groupby('x').y.value_counts().unstack().fillna(0)
print(gp)
print(gp[gp.columns[0]])
gp[gp.columns[0]] = gp[gp.columns[0]]/10

print(gp) дает:

y  (0.993, 4.5]  (4.5, 8.0]
x                          
1           1.0         0.0
4           1.0         0.0
6           0.0         1.0
9           0.0         1.0

print(gp[gp.columns[0]]) дает это:

x
1    1.0
4    1.0
6    0.0
9    0.0
Name: (0.993, 4.5], dtype: float64

Но следующая строка:

gp[gp.columns[0]] = gp[gp.columns[0]]/10

Выдает эту ошибку:

ValueError: Buffer has wrong number of dimensions (expected 1, got 0)

Что вызывает эту ошибку?


person fossekall    schedule 31.07.2017    source источник
comment
Я не могу воспроизвести вашу ошибку.   -  person DYZ    schedule 31.07.2017
comment
Это было странно. Я использую Anaconda 64bit. Может ли это иметь какое-либо отношение к этому?   -  person fossekall    schedule 31.07.2017
comment
Я использую Pandas '0.18.1', 64-бит.   -  person DYZ    schedule 31.07.2017
comment
Я использую 0.20.3   -  person fossekall    schedule 31.07.2017


Ответы (1)


Это кажется мне ошибкой. Даже следующее выдает ошибку

gp.loc[:, gp.columns[0]] /= 10
ValueError: Buffer has wrong number of dimensions (expected 1, got 0)

Однако, если вы предоставите метки для pd.cut, вы решите проблему.

d = {'x' : [1,4,6,9],
     'y' : [1,4,6,8]}
df = pd.DataFrame(d)
ct = pd.concat([df.x,
                pd.cut(df.y, bins=2, labels=range(2))], axis=1)
gp = ct.groupby('x').y.value_counts().unstack(fill_value=0)

gp.loc[:, gp.columns[0]] /= 10

gp

y    0  1
x        
1  0.1  0
4  0.1  0
6  0.0  1
9  0.0  1
person piRSquared    schedule 31.07.2017
comment
Да, теперь это работает. Я действительно начал сомневаться в собственном понимании Pandas. - person fossekall; 31.07.2017