如何根据 Pandas (python) 中的列表设置值

How to set values based on a list in Pandas (python)

我有一个可能很简单的问题,但我无法在堆栈中找到答案。

我有一个数据框 (df),如果列 'month' 中的值在列表 (some_list) 中,我想设置一个值 (some_value)。

例如

df[df['month'].isin(some_list)] = some_value

它吐出一个 AttributeError:'int' 对象没有属性 'view'。

任何有用的指导都会很棒。

[编辑]:

some_list = [4,5,6,7]
some_value = 100

df.month 是 1 - 12 之间的值

df.columns = ['datetime','weekday','hour','month','value']

我意识到我还想找出 some_list 中的行的索引,然后使用这些索引将另一列 ('value') 的值设置为 some_value。抱歉最初没有写。

您的问题似乎仍然没有足够的信息来找到真正的问题。这个简单的例子表明你的尝试可以正常工作:

import pandas as pd
df = pd.DataFrame({'x': [4, 5, 6], 'month': [1, 2, 3]})
some_list = [2, 3]
df[df['month'].isin(some_list)] = 99
df
Out[13]: 
   month   x
0      1   4
1     99  99
2     99  99

...表明您的问题更有可能是因为您混淆了变量的类型。目前我唯一可以建议的是只对特定列进行分配,因为您可能试图将 int 值分配给 datetime 列或其他内容,例如:

df = pd.DataFrame({'x': [4, 5, 6], 'month': [1, 2, 3]})
some_list = [2, 3]
df.loc[df['month'].isin(some_list), 'x'] = 99
df
Out[14]: 
   month   x
0      1   4
1      2  99
2      3  99