如何根据条件将一列中的值设置为另一列

里卡多·费尔南德斯

我有以下df:

subscription|amount| Total
a           |500   |
x           | 0    | 5000
x           |7500  | 5000
y           |7500  | 5000
y           | 0    | 5000
z           |7500  | 5000
z           | 0    | 5000
b           | 0    | 
b           |1000  |

我想将“总计”的值转移到“金额”,如果“金额”列中已经有值,当然还有“总计”。

我过滤了:

df.loc[(df['total'].notnull()) & (df['amount']!=0)]

但无法将值从总计(5000)转移到金额。

所需输出:

subscription|amount| Total
a           |500   |
x           | 0    | 5000
x           |5000  | 5000
y           |5000  | 5000
y           | 0    | 5000
z           |5000  | 5000
z           | 0    | 5000
b           | 0    | 
b           |1000  |
耶斯列尔

还有更多解决方案,如果将column更改为floats-DataFrame.locnumpy.where

mask = (df['Total'].notnull()) & (df['amount']!=0)

df.loc[mask, 'amount'] = df['Total']

df['amount'] = np.where(mask, df['Total'], df['amount'])

print (df)
  subscription  amount   Total
0            a   500.0     NaN
1            x     0.0  5000.0
2            x  5000.0  5000.0
3            y  5000.0  5000.0
4            y     0.0  5000.0
5            z  5000.0  5000.0
6            z     0.0  5000.0
7            b     0.0     NaN
8            b  1000.0     NaN

与整数列没有改变花车与解决方案Series.maskSeries.where或铸造integersnp.where

df['amount'] = df['amount'].mask(mask, df['Total'])

df['amount'] = df['amount'].where(~mask, df['Total'])

df['amount'] = df['amount'].where(~mask, df['Total']).astype(int)

print (df)
  subscription  amount   Total
0            a     500     NaN
1            x       0  5000.0
2            x    5000  5000.0
3            y    5000  5000.0
4            y       0  5000.0
5            z    5000  5000.0
6            z       0  5000.0
7            b       0     NaN
8            b    1000     NaN

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

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

根据Postgres中的另一列设置列的值?

熊猫根据选择为条件的另一列中的值创建一列

根据条件匹配另一列的向量替换一列中的值

根据条件将数据框列中的值替换为另一列

如何根据另一列的条件替换一列的NaN值?

如何根据另一列中的值填充列?

如何根据另一列中的值进行条件替换列中的值?

根据另一列中的条件将值加在一起

根据条件将一列中的值替换为另一列中的值

通过根据另一列中的条件更改一列中的值将返回错误

根据另一列中的条件修改一列中的值的快捷方式

如何根据另一列中的值填充另一列中的值?

根据另一列中的条件将值插入另一列中的新列中

根据条件将值分配给另一列中的一列

根据一列中的值(以另一列为条件)按顺序对数据进行排序

如何根据另一列中的条件更改数据框的某一列中的值?

根据存储在另一列中的值将值分配给一列

根据条件将一列中的条目替换为另一列中的条目

根据另一列熊猫将列设置为等于值

根据条件将值从一列移动到另一列

根据另一列的三个条件设置一列的值

根据 R 中另一列中的值设置一列的值

根据另一列中的值将多列设置为零

根据另一列将列值设置为外键

根据另一列中的条件在 Pandas 数据框中设置值

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

如何根据条件将数据框列中的值写入另一列?

如何根据另一列是否为 NA 向上搜索一列的值?