带有 if else 的 Pandas 列表达式
Posted
技术标签:
【中文标题】带有 if else 的 Pandas 列表达式【英文标题】:Pandas column expressions with if else 【发布时间】:2014-09-02 15:04:57 【问题描述】:我正在以这种方式在 Python pandas
中创建一个字符串表达式
df['ABC'] = (df['A']
+ ' + ' + df['B']
+ ' + ' + df['C'])
但是,pandas
返回此错误
TypeError: cannot concatenate 'str' and 'float' objects
数据框有几列有NaN
,并且在这些情况下字符串连接失败。对于测试用例,我如何编写语句来实现连接,如下所示。看来我们必须在上面的表达式中添加一条 ifelse 语句:
A B C ABC
x x
x y x + y
x y z x + y + z
【问题讨论】:
【参考方案1】:你可以这样做:
>>> join_row = lambda ts: ' + '.join(ts.dropna())
>>> df[['A', 'B', 'C']].apply(join_row, axis=1)
0 x
1 x + y
2 x + y + z
dtype: object
[['A', 'B', 'C']]
仅当数据框中还有其他列时才需要。
【讨论】:
以上是关于带有 if else 的 Pandas 列表达式的主要内容,如果未能解决你的问题,请参考以下文章
pandas(Dataframe)里使用lambda匿名函数if..else表达式
使用带有pandas dataframe列的条件if / else逻辑
带有if和else语句的foreach循环在if语句为假时不执行else语句
pandas编写自定义条件函数基于if函数elif函数else函数使用apply基于条件对数据行进行判断生成新的数据列(apply function with condition)
pandas新字段(数据列)生成使用np.where或者apply lambda函数结合if else生成新的字段,详解及实战