将数据帧转换为系列创建NA

2024-09-28 21:06:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经下载了dataframe,并尝试从此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')

这里是数据帧中的列,qid1question1的ID,qid2question2的ID 此外,我的数据帧中没有Nan

data.question1.isnull().sum()
0

我想从第一个问题创建pandas.Series(),以qid1作为索引:

question1 = pd.Series(data.question1, index = data.qid1)
question1.isnull.sum()
68416

现在,在我的系列中有68416个空值。我的错在哪里


Tags: csv数据iddataframereaddataindexseries
1条回答
网友
1楼 · 发布于 2024-09-28 21:06:55

传递匿名值,以便Series向量不尝试对齐:

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匹配的索引值

相关问题 更多 >