Python 基于行值条件从数据帧中提取列名
我有一个数据帧Python 基于行值条件从数据帧中提取列名,python,dataframe,Python,Dataframe,我有一个数据帧 A B C u1 0 .5 .2 u2 .2 0 .3 u3 .1 0 0 我需要根据每个索引查找值不为零的列名 所以我需要输出 elements u1 [B,C] u2 [A,C] u3 [A] 我可以使用df.idxmax(axis=1) 但是如何找到列的所有名称。您可以使用axis=1进行按行处理,并通过将值转换为bool-0为False,
A B C
u1 0 .5 .2
u2 .2 0 .3
u3 .1 0 0
我需要根据每个索引查找值不为零的列名
所以我需要输出
elements
u1 [B,C]
u2 [A,C]
u3 [A]
我可以使用df.idxmax(axis=1)
但是如何找到列的所有名称。您可以使用axis=1
进行按行处理,并通过将值转换为bool
-0
为False
,而不是0
为True
:
df = df.apply(lambda x: x.index[x.astype(bool)].tolist(), 1)
print (df)
u1 [B, C]
u2 [A, C]
u3 [A]
dtype: object
如果输出应为string
s:
s = np.where(df, ['{}, '.format(x) for x in df.columns], '')
df = pd.Series([''.join(x).strip(', ') for x in s], index=df.index)
print (df)
u1 B, C
u2 A, C
u3 A
dtype: object
详情:
print (s)
[['' 'B, ' 'C, ']
['A, ' '' 'C, ']
['A, ' '' '']]
可能值得指定您拥有的数据帧类型<代码>火花,
熊猫
?解决方案不起作用?有问题吗?好的,什么是打印(df.dtypes)
?所以你使用第一个或第二个解决方案?df.dtypes是float。需要第一个或第二个解决方案吗?我认为数据有问题,如果不保密,你能在我的个人资料中将真实数据发送到我的电子邮件吗?当然。。我发了一张快照