我正在使用Jupyter笔记本。默认的python内核。 ' numpy的'和熊猫'导入。
此列名为' Period'。该值包含数字和文本,如" Period"。数据类型是'对象'。我想删除列'期间'的值的行。不是一个数字。 我试图做的是首先将列从对象转换为数字。
pd.to_numeric(df['Period'],errors='coerce')
它返回了一个数字和NaN列表。最后一行是:
Name: Period, dtype: float64
如果我再次检查:
df['Period'].dtype
它返回:
dtype('O')
显然转换实际上并不起作用。同样使用以下代码,它什么都没有删除。
df.dropna(subset=['Period'])
你认为出了什么问题?
答案 0 :(得分:3)
默认情况下,to_numeric
等Pandas操作不会“就地”运行。我建议您将结果分配给数据框中的列。
df['Period_numbers'] = pd.to_numeric(df['Period'], errors='coerce')
与dropna
相同。
在大多数情况下,您可以将inplace=True
传递给方法或函数。但我确实建议改为分配结果。
答案 1 :(得分:1)
可替换地:
df[df['Period'].str.isnumeric()]