python - 数据框缺失值显示在每行的末尾
问题描述
我正在处理缺少值的数据集。数据集的头部如下所示:
1:0.2 2:0.7 3:-1.2 4:0.5
1:0.9 3:0.1 4:0.8
1:-0.1 2:0.1 4:1.0
2:0.6 3:-1.0
冒号前面的数字是特征的索引。正如人们在某些行中看到的那样,缺少某些功能。因此,当我使用以下代码导入数据时,
df = pandas.read_csv('dataset',header=None,sep = '\s+|:',engine='python')
我得到的数据框如下所示:
0 1 2 3 4 5 6 7
0 1.0 0.2 2.0 0.7 3.0 -1.2 4.0 0.5
1 1.0 0.9 3.0 0.1 4.0 0.8 NaN NaN
2 1.0 -0.1 2.0 0.1 4.0 1.0 NaN NaN
3 2.0 0.6 3.0 -1.0 NaN NaN NaN NaN
我想在正确的位置用 0 替换 NaN。但如果我使用df.fillna(0)
,我将替换每行末尾的 NaN 。我真正想要的是一个看起来像这样的数据框,
0 1 2 3 4 5 6 7
0 1.0 0.2 2.0 0.7 3.0 -1.2 4.0 0.5
1 1.0 0.9 0.0 0.0 3.0 0.1 4.0 0.8
2 1.0 -0.1 2.0 0.1 0.0 0.0 4.0 1.0
3 0.0 0.0 2.0 0.6 3.0 -1.0 0.0 0.0
解决方案
您可以使用该csv
模块来构建字典列表,然后将其提供给pd.DataFrame
构造函数。最后,使用fillna
来填充空值0
。
from io import StringIO
import csv
import pandas as pd
x = StringIO("""1:0.2 2:0.7 3:-1.2 4:0.5
1:0.9 3:0.1 4:0.8
1:-0.1 2:0.1 4:1.0
2:0.6 3:-1.0""")
# replace x with open('file.csv', 'r')
with x as fin:
L = [dict(i.split(':') for i in line) for line in csv.reader(fin, delimiter=' ')]
df = pd.DataFrame(L, dtype=float).fillna(0)
print(df)
1 2 3 4
0 0.2 0.7 -1.2 0.5
1 0.9 0.0 0.1 0.8
2 -0.1 0.1 0.0 1.0
3 0.0 0.6 -1.0 0.0
推荐阅读
- react-native - 'android/app/build/outputs/apk/debug/app-debug.apk' 中的应用程序不存在或无法访问
- javascript - 为什么我不能将 weekstart 设置为星期一?
- python - 如何将 json 对象数组内的列表中的 dict 转换为数据框?
- ios - IOS swift的谷歌地图中的折线
- python - 如何对由字典组成的列表进行排序?
- php - 将来自远程 url 的动态数据加载到引导模式弹出窗口中
- android - 如何使firebase实时数据库用户的私有节点?
- javascript - 如何在 React Native 中修复“axios createError,Handle Error 的网络错误”
- f# - Fire and no-wait (without do!) vs Fire and await (do!) 有巨大的差异表现?
- javascript - 从 Lambda 向 EC2 服务器实例发送命令