以下是我的代码(仅限模拟数字):
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)
导致此错误的原因是什么?
答案 0 :(得分:5)
这对我来说似乎是个错误。甚至以下产生错误
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