下面是我的代码(只是模拟数字):
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)
是什么导致了这个错误?
发布于 2017-07-31 20:43:42
对我来说这好像是个虫子。即使下面的内容也会产生错误
gp.loc[:, gp.columns[0]] /= 10
ValueError:缓冲区的维数错误(预期为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
https://stackoverflow.com/questions/45424753
复制相似问题