根据条件选择行并从向量中设置值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据条件选择行并从向量中设置值相关的知识,希望对你有一定的参考价值。

如果满足on列中的条件,我想将整个行设置为向量中的值。

import pandas as pd

df = pd.DataFrame([['a', 1, 1], ['a', 1, 1], ['b', 1, 1]], columns=('one', 'two', 'three'))
vector = pd.Series([2,3,4])
print(df)

  one  two  three
0   a    1      1
1   a    1      1
2   b    1      1

我希望结果像这样:

df_wanted = pd.DataFrame([['a', 1, 1], ['a', 1, 1], ['b', 4, 4]], columns=('one', 'two', 'three'))
print(df_wanted)

  one  two  three
0   a    1      1
1   a    1      1
2   b    4      4

我尝试了这个,但是给了我错误:

df.loc[df['one']=='b'] = vector[df['one']=='b']
ValueError: Must have equal len keys and value when setting with an iterable

// m。

答案

您可以在列表中指定要设置的列:

df.loc[df['one']=='b', ['two', 'three']] = vector[df['one']=='b']
print(df)
  one  two  three
0   a    1      1
1   a    1      1
2   b    4      4

或者,如果需要更多动态解决方案,请选择所有数字列:

df.loc[df['one']=='b', df.select_dtypes(np.number).columns] = vector[df['one']=='b']

或仅比较一次并分配给变量:

m = df['one']=='b'
df.loc[m, df.select_dtypes(np.number).columns] = vector[m]

以上是关于根据条件选择行并从向量中设置值的主要内容,如果未能解决你的问题,请参考以下文章

我无法从通过 Ajax 创建的选择元素中设置值或获取值

MYSQL:当满足子查询的所有条件时,在 UPDATE 查询中设置值

如何根据索引在数据框中设置值[重复]

Javascript/jQuery:在多个选择中设置值(选择)

如何使用淘汰赛从复杂对象的选择选项中设置值?

onActivityCreated() 中的捆绑返回 null,即使在 onSaveInstanceState() 中设置值之后也是如此