python pandas:根据列表中列的另一个值设置列的值

tktktk0711

我有一个如下所示的数据框:

        f1              f2              class              n
0   weekly_return   0.155796               ab            weekly
1   monthly_return  0.153907               ab            monthly
2   volume_ratio    0.123844               NaN           volume
3   margin_selling_balance  0.115411       ad            margin
4   margin_debt_balance 0.107883           ae            margin
5   rv_ratio    0.077373                   NaN            rv
..................................................................

并且有一个名为 lst_n 的列表,如下所示:

lst_n = ['rv', 'ag', 'rg', ...........]

如果 n 的值在 lst_n 中,我想将此数据框的类列的值设置为“class_a”。例如第五行,n是rv,在n列表(lst_n)中,所以class的值设置为'class_a'。我的代码如下,但有错误:

  lst_n = ['rv', 'ag', 'rg', ...........]
  df.loc[df.n is in lst_n, 'class'] = 'class_a'

但有错误:

df.loc[df.n is in lst_n, 'class'] = 'class_a'
                           ^
SyntaxError: invalid syntax

谢谢!

耶斯列

你需要isin口罩:

lst_n = ['rv', 'ag', 'rg']
df.loc[df['n'].isin(lst_n), 'class'] = 'class_a'
print (df)
                       f1        f2    class        n
0           weekly_return  0.155796       ab   weekly
1          monthly_return  0.153907       ab  monthly
2            volume_ratio  0.123844      NaN   volume
3  margin_selling_balance  0.115411       ad   margin
4     margin_debt_balance  0.107883       ae   margin
5                rv_ratio  0.077373  class_a       rv

另一个解决方案Series.mask

df['class'] = df['class'].mask(df.n.isin(lst_n), 'class_a')
print (df)
                       f1        f2    class        n
0           weekly_return  0.155796       ab   weekly
1          monthly_return  0.153907       ab  monthly
2            volume_ratio  0.123844      NaN   volume
3  margin_selling_balance  0.115411       ad   margin
4     margin_debt_balance  0.107883       ae   margin
5                rv_ratio  0.077373  class_a       rv

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python Pandas根据另一个列中的总数从另一个dataFrame中选择值

根据python中另一个列值的顺序设置数据框中的列值

Python Pandas根据另一个列值创建新列

熊猫python从另一个列值中从列表列中随机选择值

根据python中另一个列表的最大值对数组的列索引进行分组

Python Pandas:根据另一个数据框的类别值创建新列

根据python中的索引用另一个列表的值替换列表中的值

Python根据另一个数据框中的列值匹配列名

根据R或python中的条件,从另一列列表中替换一个列列表中的值

Pandas / Python:根据另一列中的值设置一列的值

Python根据另一个数据框值中存在的列索引填充数据框值

Pandas / Python:使用.replace()从另一个列值替换列值

Python Pandas - 如何将 df 中的列值与另一个 df 的列值进行比较

如何使用 Python 将一列中的值设置为另一列中的另一个值

在Python中,如何根据另一个__init__变量设置值?

根据另一个Pandas列中的条件添加到python列表的正确方法是什么?

python&pandas-删除行,其中列值是另一个DataFrame中的索引值

根据另一个数据框python熊猫替换列值-更好的方法?

Python Pandas:如何计算基于另一个列的值出现在列中的次数?

根据另一列的值在 python 文件中添加一个额外的列

读取标题并将列值替换为 Python 中的另一个值

根据基于该字典中另一个键的值的条件,更新python词典列表中的值

Python-根据另一个数据集的列值过滤一个数据集

如果列值在列表中,则创建一个列值-python pandas

根据另一个 np.array python 的值设置 np.array 的值

如果值相同,Python Pandas将列从df复制到另一个

Python-编写代码,根据另一个列表中的值获取一个列表中的值,并输出输出文本**

从另一个数据框中获取的列中的python总和值

python pandas添加了另一个列表中不存在的多列