如何根据 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
我有一个可能很简单的问题,但我无法在堆栈中找到答案。
我有一个数据框 (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