如果以前有人问过/回答过,我很抱歉,经过一段时间的搜索,我找不到这个问题的答案。
非常简单地把我想把多个列组合成一个用a分隔的,问题是有些单元格是空的(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。因此,非常感谢任何帮助或推动正确的方向!
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
在将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