【问题标题】:ValueError: labels not contained in axisValueError:轴中不包含标签
【发布时间】:2017-09-18 08:27:33
【问题描述】:

我有以下形式的数据:

IMP_START_TIME IMP_CLR_TIME SERV_OR_IOR_ID 0 2017-02-28 23:59:32.8730 2017-03-01 00:11:28.7550 -1447310116 1 2017-03-01 00:00:09.1820 2017-03-01 00:01:06.9120 1673545041 ... ... ... ... 266863 2017-03-01 04:05:28.2200 nan 2108335332 266866 2017-03-01 13:10:01.1600 nan -724153592

我想删除 IMP_CLR_TIME 列中所有包含“nan”的行。为此,我编写了以下代码:

df = pd.read_csv(r'C:\Users\SIA_1_3_2017.csv',low_memory=False)
SID_ST_CT_col = df[['IMP_START_TIME','IMP_CLR_TIME','SERV_OR_IOR_ID']]

SID_ST_CT_str = SID_ST_CT_col.astype(str)                


SID_ST_CT_str.drop(SID_ST_CT_str.loc[SID_ST_CT_str['IMP_CLR_TIME']=='nan'])

但我收到以下错误:

ValueError: labels ['IMP_START_TIME' 'IMP_CLR_TIME' 'SERV_OR_IOR_ID'] not contained in axis

当我使用以下命令打印 IMP_CLR_TIME 列中具有“nan”的行时,它可以工作。但是当我尝试删除相同的行时,我无法弄清楚为什么会出现这样的错误。

【问题讨论】:

  • 检查列中是否有空格,查看df.columns.tolist()的输出

标签: python-3.x pandas dataframe timestamp valueerror


【解决方案1】:

看来你需要dropna:

print (df.columns.tolist())
['IMP_START_TIME', 'IMP_CLR_TIME', 'SERV_OR_IOR_ID']

df = df.dropna(subset=['IMP_CLR_TIME'])
print (df)
             IMP_START_TIME              IMP_CLR_TIME  SERV_OR_IOR_ID
0 2017-02-28  23:59:32.8730  2017-03-01 00:11:28.7550     -1447310116
1 2017-03-01  00:00:09.1820  2017-03-01 00:01:06.9120      1673545041

删除列名中的空格:

  • 将参数skipinitialspace=True添加到read_csv
  • strip 列中的空格:
df.columns = df.columns.str.strip()

【讨论】:

    猜你喜欢
    • 2016-10-12
    • 1970-01-01
    • 2016-07-07
    • 2018-12-06
    • 2018-12-17
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 2019-07-25
    相关资源
    最近更新 更多