Ste*_*ish 2 python list matching dataframe pandas
我有一个可能很简单的问题,我无法在堆栈上找到答案。
我有一个数据框 (df),如果“月”列中的值在列表 (some_list) 中,我想设置一个值 (some_value)。
例如
Run Code Online (Sandbox Code Playgroud)df[df['month'].isin(some_list)] = some_value
它引发了一个 AttributeError: 'int' object has no attribute 'view'。
任何有用的方向都会很棒。
[编辑]:
some_list = [4,5,6,7]
some_value = 100
Run Code Online (Sandbox Code Playgroud)
df.month 是 1 - 12 之间的值
df.columns = ['datetime','weekday','hour','month','value']
我意识到我还想找出 some_list 中的行的索引,然后使用这些索引将另一列的值('value')设置为 some_value。为最初没有写那篇道歉。
Mar*_*ius 13
您的问题似乎仍然没有足够的信息来找到真正的问题。这个快速示例表明您的尝试可以正常工作:
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
Run Code Online (Sandbox Code Playgroud)
...表明您的问题更有可能是因为您混淆了变量的类型。目前我唯一能建议的就是只对特定列进行分配,因为您可能试图将 int 值分配给日期时间列或其他内容,例如:
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
Run Code Online (Sandbox Code Playgroud)