python - pandas read_csv 跳过行不起作用

标签 python pandas

我正在尝试跳过一些包含不正确值的行。

这是我在不使用skiprows参数的情况下从文件中读取数据时的数据。

>> df    
         MstrRecNbrTxt  UnitIDNmb  PersonIDNmb  PersonTypeCde
2194593              P        NaN          NaN            NaN
2194594      300146901        1.0          1.0            1.0
4100689            DAT        NaN          NaN            NaN
4100690      300170330        1.0          1.0            1.0
5732515             DA        NaN          NaN            NaN
5732516      300174170        2.0          1.0            1.0

我想跳过第 2194593、4100689 和 5732515 行。我希望在我读入的表中看不到这些行。

>> df = pd.read_csv(file,sep='|',low_memory=False,
                     usecols= cols_to_use,
                     skiprows=[2194593,4100689,5732515])

然而,当我再次打印时,这些行仍然存在。

>> df
        MstrRecNbrTxt  UnitIDNmb  PersonIDNmb  PersonTypeCde
2194593              P        NaN          NaN            NaN
2194594      300146901        1.0          1.0            1.0
4100689            DAT        NaN          NaN            NaN
4100690      300170330        1.0          1.0            1.0
5732515             DA        NaN          NaN            NaN
5732516      300174170        2.0          1.0            1.0

这是数据:

{'PersonIDNmb': {2194593: nan,
          2194594: 1.0,
          4100689: nan,
          4100690: 1.0,
          5732515: nan,
          5732516: 1.0},
         'PersonTypeCde': {2194593: nan,
          2194594: 1.0,
          4100689: nan,
          4100690: 1.0,
          5732515: nan,
          5732516: 1.0},
         'UnitIDNmb': {2194593: nan,
          2194594: 1.0,
          4100689: nan,
          4100690: 1.0,
          5732515: nan,
          5732516: 2.0},
         '\ufeffMstrRecNbrTxt': {2194593: 'P',
          2194594: '300146901',
          4100689: 'DAT',
          4100690: '300170330',
          5732515: 'DA',
          5732516: '300174170'}}

我做错了什么?

我的最终目标是消除数据框中的 NaN 值,以便可以将数据作为整数而不是 float 读入(因为这使得很难将此表连接到其他非浮点表)。

最佳答案

工作示例...希望这有帮助!

from io import StringIO
import pandas as pd
import numpy as np

txt = """index,col1,col2
0,a,b
1,c,d
2,e,f
3,g,h
4,i,j
5,k,l
6,m,n
7,o,p
8,q,r
9,s,t
10,u,v
11,w,x
12,y,z"""

indices_to_skip = np.array([2, 6, 11])
# I offset `indices_to_skip` by one in order to account for header
df = pd.read_csv(StringIO(txt), index_col=0, skiprows=indices_to_skip + 1)
print(df)

      col1 col2
index          
0        a    b
1        c    d
3        g    h
4        i    j
5        k    l
7        o    p
8        q    r
9        s    t
10       u    v
12       y    z

关于python - pandas read_csv 跳过行不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43614377/

相关文章:

python - 将三个 csv/xls 文件拉入数据帧会导致找不到其中一个

python - 尝试 groupby 聚合 pandas 中的多行时缺少列

python - 来自flask的响应在React前端收到的Json上有额外的键

Python 全局关键字与 Pylint W0603

python - 取消堆叠 "multi-indexed"列|在 Pandas 中

python - 将 Pandas DataFrame 中的 2 列与 .loc 进行比较

python - 从 python 脚本执行机器人框架文件

python - Google Cloud PubSub 在 Python 中未正确调用

python - 根据组聚合值在 MultiIndex Dataframe 上设置值

python - 组级 Python 的累积计数