根据条件在熊猫数据框中添加新列,并替换不同列中的Nan值

MishD

我正在尝试使用numpy根据某些条件在数据框中添加新列,因此该框看起来像。

import pandas as pd
import numpy as np
rawData = ({'a': [None,2,3], 'b': [5,6,8],'currency':['AUD','SA','NZD']})
df = pd.DataFrame(rawData)
print(df)

    a  b currency
0  NaN  5      AUD
1  2.0  6       SA
2  3.0  8      NZD

根据条件添加列:

mask1 = df['currency'].isin(['AUD'])
choice_mask1 = df['a']
mask2 = df['currency'].isin(['SA','NZD'])
choice_mask2= df['b']

df['c'] = np.select([mask1,mask2],[choice_mask1,choice_mask2],default = 0.00)

print(df)

  a  b currency    c
0  NaN  5      AUD  NaN
1  2.0  6       SA  6.0
2  3.0  8      NZD  8.0

因此,C列中的输出具有NaN值,这是我不想要的。因此,如果列a中存在NaN,则新添加的列需要考虑列b中的值。

我在使用numpy时很新,所以请帮助我。

瓦沙里

您可以简化代码

df['c'] = 0
cond = (df['currency'].isin(['AUD'])) & (df['a'].notnull())
df['c'] = np.where(cond, df['a'], df['b'])


    a   b   currency    c
0   NaN 5   AUD         5.0
1   2.0 6   SA          6.0
2   3.0 8   NZD         8.0

编辑:正如@ Ben.T所指出的,如果您正在查看具有不同货币的观察值,则需要调整条件。

rawData = ({'a': [None,2,3, 5, 3], 'b': [5,6,8, 1,6],'currency':['AUD','SA','NZD', 'AUD', 'US']})
df = pd.DataFrame(rawData)

df['c'] = 0
cond1 = (df['currency'].isin(['AUD'])) & (df['a'].notnull())
cond2 = (df['currency'].isin(['SA','NZD'])) | (df['currency'].isin(['AUD'])) & (df['a'].isnull())

df.loc[cond1, 'c'] = df['a']
df.loc[cond2, 'c'] = df['b']

    a   b   currency    c
0   NaN 5   AUD         5.0
1   2.0 6   SA          6.0
2   3.0 8   NZD         8.0
3   5.0 1   AUD         5.0
4   3.0 6   US          0.0

或使用np.select

mask1 = (df['currency'].isin(['AUD'])) & (df['a'].notnull())
choice_mask1 = df['a']
mask2 = (df['currency'].isin(['SA','NZD'])) | (df['currency'].isin(['AUD'])) & (df['a'].isnull())
choice_mask2= df['b']

df['c'] = np.select([mask1,mask2],[choice_mask1,choice_mask2],default = 0.00)

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据熊猫中的多个条件添加新的数据框

根据条件替换数据框列中的值

根据条件用不同的替换字典替换pandas数据框列中的值

如何根据条件替换熊猫数据框中的值?

根据熊猫数据框中的条件为列分配值

在熊猫数据框中添加新列

熊猫数据框根据条件用不同的列值替换列的最大值

根据存储在不同数据框中的行和列标签从熊猫数据框中选择值

如何根据不同列中的值替换数据框中的值

如何根据条件用NaN替换数据框列值?

根据多种条件替换熊猫数据框中的值

如何根据熊猫数据框数据透视表中的条件获取列中的值?

根据同一熊猫数据框中其他列的值创建包含布尔值或NaN的新列

如何根据“标识符列”和熊猫数据框中的附加条件替换值?

根据熊猫中的日期条件,将一列的值替换为NaN

熊猫:比较数据框的列并根据条件添加新的列和值

根据条件在熊猫数据框中添加新行

熊猫数据框根据条件更改列中的值

数据框熊猫(NaN列)中的条件和条件

用其他列中的计算替换熊猫数据框中的NaN值

根据条件替换数据框的列中的多个值

熊猫:根据另一个数据框中的值在数据框中添加新列

根据熊猫数据框中其他列的条件和值创建新列

如何根据另一列中满足的条件在熊猫数据框中添加新列?

如何根据其他两列中的值在熊猫数据框中添加新列

如何根据条件向熊猫数据框中的新列添加级别?

Pandas 数据框根据条件替换列中的值

如何根据条件在熊猫数据框中创建新列?

根据条件替换熊猫数据框列中的值