我有一个表,其中有一个名为“price”的列。此列的类型为object。因此,它包含字符串形式的数字以及NaN或?字符。我想求出此列的平均值,但首先我必须删除NaN和?值,并将其转换为float
下面是一个例子:
import pandas as pd
import numpy as np
df = pd.read_csv('Automobile_data.csv', sep = ',')
df = df.dropna('price', inplace=True)
df['price'] = df['price'].astype('int')
df['price'].mean()
但是,这不起作用。错误显示:
ValueError: No axis named price for object type DataFrame
我怎样才能解决这个问题?
1条答案
按热度按时间g52tjvyc1#
edit:在panda 1.3及更低版本中,你需要将
subset=[col]
Package 在一个列表/数组中。在panda 1.4及更高版本中,你可以将一列作为字符串传递。你有几个问题:
df.dropna()
参数需要坐标轴,然后是子集。坐标轴是行/列,子集是要查看的行/列。因此,您希望它是(我认为)df.dropna(axis='rows',subset='price')
1.使用
inplace=True
会使整行返回None
,所以你设置了df = None
,你不想这么做,如果你使用的是inplace=True
,那么你不给它赋值,整行就是df.dropna(...,inplace=True)
。1.不要使用
inplace=True
,只做赋值。也就是说,你应该使用df=df.dropna(axis='rows',subset='price')