如何处理TypeError:必须为str,而不是float

时间:2019-07-02 19:52:39

标签: python python-3.x pandas

我正在尝试运行此

 pa['pattern'] = pa['AccessType']  + pa.groupby(['AccessedBy'])['AccessType'].shift(1)

但它正在抛出

  TypeError: must be str, not float

但是

AccessedBy                 object
AccessType                 object

几天前我最后一次运行它时运行良好。我想念什么?

2 个答案:

答案 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)