我已下载数据框并尝试从此DataFrame创建pd.Series
data = pd.read_csv(filepath_or_buffer = "train.csv", index_col = 0)
data.columns
Index([u'qid1',u'qid2',u'question1',u'question2'], dtype = 'object')
以下是DataFrame中的列,qid1
是question1
的ID,qid2
是question2
的ID
此外,我的DataFrame中没有Nan
:
data.question1.isnull().sum()
0
我想从qid1
作为索引的第一个问题创建pandas.Series():
question1 = pd.Series(data.question1, index = data.qid1)
question1.isnull.sum()
68416
现在,我的系列中有68416个Null值。我的错误在哪里?
答案 0 :(得分:3)
传递匿名值,以便Series
ctor不会尝试对齐:
question1 = pd.Series(data.question1.values, index = data.qid1)
这里的问题是question1
列有它自己的索引所以它会在构造过程中尝试使用它
示例:
In [12]:
df = pd.DataFrame({'a':np.arange(5), 'b':list('abcde')})
df
Out[12]:
a b
0 0 a
1 1 b
2 2 c
3 3 d
4 4 e
In [13]:
s = pd.Series(df['a'], index = df['b'])
s
Out[13]:
b
a NaN
b NaN
c NaN
d NaN
e NaN
Name: a, dtype: float64
In [14]:
s = pd.Series(df['a'].values, index = df['b'])
s
Out[14]:
b
a 0
b 1
c 2
d 3
e 4
dtype: int32
这里有效的是你使用传入的新索引重新索引现有列,因为没有与你匹配的索引值NaN