簡體   English   中英

嘗試在熊貓中刪除列時出現keyError。

[英]keyError when trying to drop a column in pandas.

我想從數據中刪除一些行。 我正在使用以下代碼-

    import pandas as pd
    import numpy as np

    vle = pd.read_csv('/home/user/Documents/MOOC dataset original/vle.csv')


    df = pd.DataFrame(vle)
    df.dropna(subset = ['week_from'],axis=1,inplace = True)
    df.dropna(subset = ['week_to'],axis=1,inplace = True)
    df.to_csv('/home/user/Documents/MOOC dataset cleaned/studentRegistration.csv')

但它引發以下錯誤-

      raise KeyError(list(np.compress(check,subset)))
      KeyError: [' week_from ']      

怎么了?

我認為需要省略axis=1 ,因為默認值是axis=0用於通過dropna按檢查NaNdropna集刪除具有NaNs(缺失值)的行,所以解決方案也應簡化為一行:

df.dropna(subset = ['week_from', 'week_to'], inplace = True)

樣品

df = pd.DataFrame({'A':list('abcdef'),
                   'week_from':[np.nan,5,4,5,5,4],
                   'week_to':[1,3,np.nan,7,1,0],
                   'E':[5,3,6,9,2,np.nan],
                   'F':list('aaabbb')})

print (df)
   A  week_from  week_to    E  F
0  a        NaN      1.0  5.0  a
1  b        5.0      3.0  3.0  a
2  c        4.0      NaN  6.0  a
3  d        5.0      7.0  9.0  b
4  e        5.0      1.0  2.0  b
5  f        4.0      0.0  NaN  b

df.dropna(subset = ['week_from', 'week_to'], inplace = True)
print (df)
   A  week_from  week_to    E  F
1  b        5.0      3.0  3.0  a
3  d        5.0      7.0  9.0  b
4  e        5.0      1.0  2.0  b
5  f        4.0      0.0  NaN  b

如果要通過為check NaN指定行來刪除列:

df.dropna(subset = [2, 5], axis=1, inplace = True)
print (df)
   A  week_from  F
0  a        NaN  a
1  b        5.0  a
2  c        4.0  a
3  d        5.0  b
4  e        5.0  b
5  f        4.0  b

但是如果需要按名稱刪除列的解決方案不同,則需要drop

df.drop(['A','week_from'],axis=1, inplace = True)
print (df)
   week_to    E  F
0      1.0  5.0  a
1      3.0  3.0  a
2      NaN  6.0  a
3      7.0  9.0  b
4      1.0  2.0  b
5      0.0  NaN  b

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM