我有这个数据框
X Y Z A
0 1 2 0 4
1 0 2 3 0
2 1 0 3 4
3 1 0 0 4
4 1 0 0 0
我想将其保存为具有此格式的文本文件(输出所有行但排除任何0列)
1,2,4
2,3
1,3,4
1,4
1
这可以通过for循环输出,但是对于大型数据帧来说效率非常低。有没有更快的方法呢?
答案 0 :(得分:2)
In [103]: (df.astype(str)
...: .replace('0','')
...: .add(',')
...: .sum(1)
...: .replace([',{2,}',',$','^,'],[',','',''], regex=True))
...:
Out[103]:
0 1,2,4
1 2,3
2 1,3,4
3 1,4
4 1
dtype: object
答案 1 :(得分:2)
replace
+ str.cat
df.astype(str).replace('0',np.nan).apply(lambda x :x.str.cat(sep=','),1)
Out[525]:
0 1,2,4
1 2,3
2 1,3,4
3 1,4
4 1
dtype: object