根据多个条件在pandas中添加具有不同输出的两列

马丁·休森

假设我们必须遵循熊猫数据框

asd = pd.DataFrame({'A':['a', 'b', np.nan, 'c', np.nan], 'B':['f', np.nan, 'u', 'i', np.nan]})

我想连接 'A' 和 'B' 列中的值并在它们之间放置一个逗号 ',' 并将其放入一个新列 asd['C'] 如果它们都是 notnull()。否则,如果另一个是 null() 则返回,或者如果两者都是 null() 则返回 np.nan 所以列 'C' 的最终结果将是

asd['C'] = ['a, f', 'b', 'u', 'c, i', np.nan]

我尝试了以下

def f(asd):
if asd['A'].notnull() & asd['B'].notnull():
    asd['C'] = asd['A'] + ', ' + asd['B']
elif asd['A'].notnull() & asd['B'].isnull():
    asd['C'] = asd['A']
elif asd['A'].isnull() & asd['B'].notnull():
    asd['C'] = asd['B']
else:
    asd['C'] = np.nan
return asd['C']

asd['C'] = asd.apply(f, axis=1)

但它给了我以下错误

("'str' object has no attribute 'notnull'", 'occurred at index 0')

任何帮助真的很感激

cs95

使用apply+ str.join

df.apply(lambda x: ', '.join(x.dropna()), 1).replace('', np.nan)

0    a, f
1       b
2       u
3    c, i
4     NaN
dtype: object

最后一个replace电话会处理您的np.nan要求。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MYSQL,在查询中如何添加两个具有不同值的条件?

根据具有不同列的条件创建新列

根据pandas DataFrame中的列值有条件地替换多个列

合并两个具有不同列的表,并在输出中显示null

选择具有不同条件的两次列

一列中的多个表更新具有一组不同的值和条件

如何根据同一张表的引用输出两次具有不同值的列?

具有不同粒度的两列的DAX条件求和

VLOOKUP在不同的列中具有多个条件

R:根据具有多个列的条件添加新列

根据具有多个记录的表中另一列的不同值添加值

如何根据C#中的条件合并两个具有不同属性的列表

根据对列中每个不同值具有特定条件的行,在Pandas Dataframe中计算perc

根据条件添加两个具有不同大小的df列

根据SQL中多个列中的条件创建具有3个类别的Status列

SQL:计算具有多个条件的不同列组合

Excel-在不同列中具有多个有效条件的AverageIfs

Excel Basic:具有不同输出的多个条件和案例

根据字段值在两个不同的列中输出

根据数据框中的其他列,在具有多种条件的 Pandas 中添加列

pandas:根据其他列中的条件创建具有字符串值的列

如何添加具有特殊条件的不同行的两列?

如何根据连接条件从 R 中的两个不同数据框中添加两列

根据不同的索引在 Pandas 中添加一个新的条件列

如何根据具有不同数据类型的两列中的条件创建新列?

根据多个条件将现有列的值分配给 Pandas 中的新列

根据两个不同的列添加一个列,每个列都有多个不同的名称

根据两列从具有不同形状的数据框中获取值

根据多个不同的条件在 pandas 数据框中创建了一个新列