python - 如何让熊猫停止跳过 TSV 文件中的第一个空白列?
问题描述
使用 导入制表符分隔的数据文件 (TSV)pandas.read_csv()
时,我返回一个具有正确列名(以及正确的列数)的数据框,但它似乎已将数据从每一列向左移动了 1。这也导致最后的最右边的列是所有NaN
值。
我怀疑这是因为 TSV 文件中的第一列完全是空白的(我相信文件的创建者None
在 python 中用作该列的值,然后用df.to_csv()
. 如何导入数据,使我的数据框最终以第一列为 all NaN
,这就是每当列中有空白值时我想要的?
我的用例涉及很多这样的 TSV 文件,其中一些将具有空白charge_code
列,但在某些列中将包含有意义的数据。因此,我需要一个动态解决方案,可以检查列的空白性质,然后将其全部设置为NaN
自动。
数据文件示例:
6 MISOPROSTOL, ORAL, 200 MCG kaiser-foundation-southern-region 106191300_CDM_2018.xlsx standard
13 DIALYSIS/STRESS VITAMIN SUPL ORAL 100 CAPSULES kaiser-foundation-southern-region 106191300_CDM_2018.xlsx standard
30 PRENATAL VITAMINS 30-DAY SUPPLY kaiser-foundation-southern-region 106191300_CDM_2018.xlsx standard
50 COMP CONT LENS EVAL kaiser-foundation-southern-region 106191300_CDM_2018.xlsx standard
我试图用来导入的代码:
pd.read_csv('problem_lines.tsv', delimiter = r'\t',
header = None,
names = ['charge_code', 'price', 'description', 'hospital_id',
'filename', 'charge_type'],
index_col = False)
和代码的输出:
charge_code price description hospital_id filename charge_type
0 6.0 MISOPROSTOL, ORAL, 200 MCG kaiser-foundation-southern-region 106191300_CDM_2018.xlsx standard NaN
1 13.0 DIALYSIS/STRESS VITAMIN SUPL ORAL 100 CAPSULES kaiser-foundation-southern-region 106191300_CDM_2018.xlsx standard NaN
2 30.0 PRENATAL VITAMINS 30-DAY SUPPLY kaiser-foundation-southern-region 106191300_CDM_2018.xlsx standard NaN
3 50.0 COMP CONT LENS EVAL kaiser-foundation-southern-region 106191300_CDM_2018.xlsx standard NaN
解决方案
如果您希望该charge_code
列为 NaN,请在阅读后设置它,如下所示:
import numpy as np
df = pd.read_csv('problem_lines.tsv', delimiter = r'\t',
header = None,
names = ['price', 'description', 'hospital_id',
'filename', 'charge_type'],
index_col = False)
df['charge_code'] = np.nan
推荐阅读
- firebase - Firestore 安全规则:hasOnly 不起作用?
- laravel - 在 Windows 中设置 Laravel 本地服务器
- r - 更新重复条目的相应数值
- java - 尝试将 excel 文件导入 Jtable,控制台抛出 IOExceltion
- java - 从 Java 中的 MySQL 检索的 long 值中的毫秒数不正确
- python - boto3 从分页器接收所有结果作为单个字典
- java - 为什么 optionalLong/Double 和 orElseThrow?
- c++ - 尽管存在专用函数,是否可以调用非专用模板函数?
- mathjax - 如何用 \left \right 为括号着色
- php - 在此服务器上未找到请求的 URL /ad/AD84567858