python - 逐行的python pandas索引(1s)
问题描述
从 Pandas Dataframe 中,如何获取行级别的所有索引?
我的数据框有大约一百列。这是一个例子:
a b c d
0 1 0 1 0
1 0 0 0 1
2 1 1 0 1
3 1 1 0 0
4 1 1 1 1
预期的结果是
0 a,c
1 d
2 a,b,d
3 a,b
4 a,b,c,d
我在 Pandas 中非“NaN”值的stackoverflow 索引上发现了这个问题, 但它在列级别有效
提前致谢。
解决方案
如果只有1
和0
值DataFrame.dot
用于与列名称和分隔符的矩阵乘法,最后使用 删除分隔符Series.str.rstrip
:
df['e'] = df.dot(df.columns + ', ').str.rstrip(', ')
#if exist another values like 0,1 and compare 1
#df['e'] = df.eq(1).dot(df.columns + ', ').str.rstrip(', ')
print (df)
a b c d e
0 1 0 1 0 a, c
1 0 0 0 1 d
2 1 1 0 1 a, b, d
3 1 1 0 0 a, b
4 1 1 1 1 a, b, c, d
也可以Series
使用:
s = df.dot(df.columns + ', ').str.rstrip(', ')
print (s)
0 a, c
1 d
2 a, b, d
3 a, b
4 a, b, c, d
dtype: object
推荐阅读
- c# - WSO2 身份服务器 5.7.0 撤销方法不起作用
- python - Django不更新静态文件,清除浏览器缓存不起作用
- javascript - Javascript - 让手臂指向悬停的元素
- spring-boot - Spring cloud Config Client(多模块应用程序)无法连接到 server-cloud-config?
- php - Select Statement Conditional WHERE Clause - 如何在同一查询中添加不受 WHERE 子句影响的变量
- css - 将图像设置在文本旁边,而不用顺风环绕图像
- javascript - 当参数等于Firefox调试器中的特定值时如何破坏js函数?
- c++ - 为什么编译器显示为真?
- sharepoint-online - 无法在 SharePoint 页面中加载 Web 部件
- python - Python while循环字符串索引超出范围