将列内容作为索引

2024-09-27 21:25:05 发布

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

我试图使用现有的pandas列作为一组索引来设置一个新的pandas列,以分隔列表,但不断出现以下错误:

TypeError: list indices must be integers or slices, not Series

参见下面的代码:

import pandas as pd

monthvalues=[1,4,9,16,25,36,49,64,81,100,121,144]

df=pd.DataFrame([1,4,7,9], columns=['month'])

df['value']=monthvalues[df['month']-1]

预期结果

    "month" "value"
0   1       1
1   4       16
2   7       49
3   9       81

请注意,这只是一个例子,实际上我并没有试图将月份数字平方。你知道吗


Tags: orintegerspandasdf列表value错误be
2条回答

这是因为df['month']返回的是一个Pandas系列,而不是我猜想您所期望的列表(尽管如果它是一个列表,它仍然不起作用)。你知道吗

我不确定是否有更整洁的方法,但试试这个:

df['value'] = [monthvalues[x] for x in df['month']-1]

如果从列表构造Series,则可以使用iloc将其作为查找传递,重要的是,可以将Series转换为numpy数组,以便它正确对齐:

In [41]:
monthvalues=[1,4,9,16,25,36,49,64,81,100,121,144]
df=pd.DataFrame([1,4,7,9], columns=['month'])
df['value']=pd.Series(monthvalues).iloc[df['month']-1].values
df

Out[41]:
   month  value
0      1      1
1      4     16
2      7     49
3      9     81

相关问题 更多 >

    热门问题