当使用pandas.read_csv()
导入制表符分隔的数据文件(TSV)时,我获得了一个具有正确列名(因此列数也正确)的数据框,但它似乎已将数据从每列的左边加1。这还会导致最后的最右边的列是所有NaN
值。
我怀疑这是因为TSV文件中的第一列完全空白(我相信文件的创建者使用None
作为python中此列的值,然后使用{{1}制作了文件}。如何导入数据,以使数据框以第一列全为df.to_csv()
结尾,每当列中包含空白值时,这就是我想要的?
我的用例涉及这些TSV文件中的很多,其中一些将具有空白的NaN
列,但其中一些将具有有意义的数据。因此,我需要一个动态的解决方案,该解决方案可以检查列的空白性质,然后将其全部自动设置为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)
答案 0 :(得分:1)
如果您希望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
答案 1 :(得分:0)
奇怪的是,我想我已经解决了。我将分隔符的原始字符串更改为常规字符串,现在由于某种原因,它可以工作。我必须承认,我有点不明白为什么为什么有效,所以,如果您有任何建议,我很想听听他们的建议!
新功能代码:
pd.read_csv('problem_lines.tsv', delimiter = '\t',
header = None,
names = ['charge_code', 'price', 'description', 'hospital_id',
'filename', 'charge_type'],
index_col = False)