fan*_*ngh 4 python missing-data dataframe pandas
我将pandas导入为pd并运行下面的代码并获得以下结果
码:
traindataset = pd.read_csv('/Users/train.csv')
print traindataset.dtypes
print traindataset.shape
print traindataset.iloc[25,3]
traindataset.dropna(how='any')
print traindataset.iloc[25,3]
print traindataset.shape
Run Code Online (Sandbox Code Playgroud)
产量
TripType int64
VisitNumber int64
Weekday object
Upc float64
ScanCount int64
DepartmentDescription object
FinelineNumber float64
dtype: object
(647054, 7)
nan
nan
(647054, 7)
[Finished in 2.2s]
Run Code Online (Sandbox Code Playgroud)
从结果来看,dropna行不起作用,因为行号没有改变,并且数据帧中仍然有NAN.那怎么样?我现在很疯狂.
jpp*_*jpp 13
pd.DataFrame.dropnainplace=False默认使用。这是大多数Pandas 操作的规范;例外确实存在,例如update。
因此,您必须要么分配回您的变量,要么明确声明inplace=True:
df = df.dropna(how='any') # assign back
df.dropna(how='any', inplace=True) # set inplace parameter
Run Code Online (Sandbox Code Playgroud)
在风格上,前者通常是首选,因为它支持运算符链接,而后者通常不会产生任何或显着的性能优势。
小智 6
这是我的第一篇文章。我刚刚花了几个小时调试这个确切的问题,我想分享我如何解决这个问题。
我将整个数据帧转换为字符串,然后使用与下面显示的类似的代码将该值放回到数据帧中:(请注意,下面的代码只会将值转换为字符串)
row_counter = 0
for ind, row in dataf.iterrows():
cell_value = str(row['column_header'])
dataf.loc[row_counter, 'column_header'] = cell_value
row_counter += 1
Run Code Online (Sandbox Code Playgroud)
将整个数据帧转换为字符串后,我使用了该dropna()函数。之前的值NaN(被 pandas 视为 null 值)被转换为 string 'nan'。
总之,在开始操作 CSV 中的数据并转换其数据类型之前,请先删除空白值。
小智 5
或者,您也可以使用notnull()method 选择不是null.
例如,如果null要从列country和variety数据框评论中选择非值:
answer=reviews.loc[(reviews.country.notnull()) & (reviews.variety.notnull())]
Run Code Online (Sandbox Code Playgroud)
但这里我们只是选择相关数据;要删除null值,您应该使用dropna()方法。
| 归档时间: |
|
| 查看次数: |
20589 次 |
| 最近记录: |