python - 使用 Pandas 中的方法链接分配给列的子集

标签 python pandas indexing method-chaining

我想使用 Pandas 方法链的现代方式为列的子集赋值。

假设我有以下数据框

df = pd.DataFrame({'a': [1, 0, 0, 1]})

   a
0  1
1  0
2  0
3  1

我想实现相当于

df.loc[df.a == 1, 'a'] = 2

用类似的东西

df.query('a == 1').assign(a=2)

但是,上面创建了一个子数据框,并没有修改整个数据框。这有可能实现吗?

最佳答案

query 方法,顾名思义,是为查询数据帧而设计的,不是为了设置值

因此,loc 是完全合适的,注意您可以通过字符串分配给一个系列:

df.loc[df.a == 1, 'a'] = 2

更惯用的可能是使用pd.Series.mask ,您甚至可以就地使用它:

df['a'].mask(df['a'] == 1, 2, inplace=True)

您应该将“方法链”视为达到目的的手段,而不是其本身的要求或目标。如果您打算使用方法链,则可以使用 pd.DataFrame.assign :

df = df.assign(a=df['a'].mask(df['a'] == 1, 2))

作为一个孤立的操作,我发现它的可读性较差。但是您可能会发现它对通过方法链进行的多个链接操作很有用。

关于python - 使用 Pandas 中的方法链接分配给列的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53223545/

相关文章:

Python:以随机顺序删除一对重复的字符串

python - 评估所有列后删除 pandas 数据框中的行

Python按索引连接数据框

postgresql - 我可以创建大于 RAM 的 Postgres 索引吗?

mysql - 索引数据会加快通过mysql搜索的速度吗?

java - 在数组中的特定索引处插入

python - 如何获取 PSD 的频率档范围

python - 如何检查两个数据集匹配列之间的相关性?

python - Django 使用来自表单字段的变量运行 python 脚本

python - 从字典导入为多索引 pd.DataFrame