import pandas as pd
import numpy as np
df = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', np.nan])
df.pop(np.nan)
Type error : can not do label indexing on class pandas.core.indexes.base.Index with these index [nan] of class float
我尝试做
df.reset_index().dropna().set_index('index')
但是当我做df.pop('a')
时,它给了我错误
答案 0 :(得分:1)
如果s
是熊猫系列,则s.reset_index()
返回一个带有该系列索引的DataFrame作为其列之一(默认情况下命名为index
)。请注意,s.reset_index(drop=True)
返回一个Series,但放弃该索引。
您任务的一种解决方案是从最后一行建立的DataFrame中选择一个唯一的名为0
的列:
# setup with the name "s" to represent a Series (keep "df" for DataFrames)
s = pd.Series([1,2,3,4], index=['a','b','c',np.nan])
res1 = s.reset_index().dropna().set_index('index')[0]
res1
index
a 1
b 2
c 3
Name: 0, dtype: int64
另一种选择是通过重新编制系列索引来删除空索引标签:
res2 = s.loc[s.index.dropna()]
res2
a 1
b 2
c 3
dtype: int64