我很抱歉,如果以前曾有人问过/回答过此问题,但是经过一段时间的搜索,我找不到这个答案。
非常简单,我想将多列组合成一个以分隔的列, 问题在于某些单元格为空(NoneType)
当将它们组合在一起时,我会得到:
或
假设我有一个生产数据框,看起来像
0 1 2
1 Rice
2 Beans Rice
3 Milk Beans Rice
4 Sugar Rice
我想要的是带有值的单列
Production
1 Rice
2 Beans, Rice
3 Milk, Beans, Rice
4 Sugar, Rice
通过一些搜索和调整,我添加了以下代码:
testColumn = productionFrame.iloc[::].apply(lambda x: ', '.join(x)), axis=1)
哪个会产生问题1
或这样更改它:
testColumn = productionFrame.iloc[::].apply(lambda x: ', '.join(x.map(str)), axis=1)
哪个会产生问题2
也许可以补充一点,我很新,并且现在正在探索Pandas / Python。因此,向您提供任何帮助或朝着正确的方向前进都非常感激!
答案 0 :(得分:2)
pd.Series.str.cat应该在这里工作
df
Out[43]:
0 1 2
1 Rice NaN NaN
2 Beans Rice NaN
3 Milk Beans Rice
4 Sugar Rice NaN
df.apply(lambda x: x.str.cat(sep=', '), axis=1)
Out[44]:
1 Rice
2 Beans, Rice
3 Milk, Beans, Rice
4 Sugar, Rice
dtype: object
答案 1 :(得分:0)
将str.join
的值转换为空字符串后,您可以使用NaN
:
res = df.fillna('').apply(lambda x: ', '.join(filter(None, x)), axis=1)
print(res)
0 Rice
1 Beans, Rice
2 Milk, Beans, Rice
3 Sugar, Rice
dtype: object