我正在尝试运行此
pa['pattern'] = pa['AccessType'] + pa.groupby(['AccessedBy'])['AccessType'].shift(1)
但它正在抛出
TypeError: must be str, not float
但是
AccessedBy object
AccessType object
几天前我最后一次运行它时运行良好。我想念什么?
答案 0 :(得分:1)
我认为您的数据可能已更改:
df = pd.DataFrame({'Group':['X']*4+['Z']*4, 'AccessType':[*'ABCDEFGH']})
df['AccessType'] + df.groupby('Group')['AccessType'].shift(1)
运行良好:
0 NaN
1 BA
2 CB
3 DC
4 NaN
5 FE
6 GF
7 HG
Name: AccessType, dtype: object
但是,您必须处理那些NaN。
但是,如果我们将“ A”更改为数字1:
df = pd.DataFrame({'Group':['X']*4+['Z']*4, 'AccessType':[1]+[*'BCDEFGH']})
df['AccessType'] + df.groupby('Group')['AccessType'].shift(1)
您得到:
TypeError:+不支持的操作数类型:“ int”和“ str”
答案 1 :(得分:1)
在执行str
之前,通过类型转换将您用作参数的DataFrame列中的一列转换为groupby()
。
df['column name'] = df['column name'].astype(str)