我有未定义数量的具有某些值的列。例如,假设有 4 列:[a,b,c,d],并且每个列名称都有关联的值,如下所示:
a b c d
0 23 11 0
11 43 33 22
12 0 12 0
Run Code Online (Sandbox Code Playgroud)
我想在 旁边写另一列d,其中包含值大于 0 的列的最大值,例如:像这样:
a b c d e
0 23 11 0 b,c
11 43 33 22 a,b,c,d
12 0 12 0 a,c
Run Code Online (Sandbox Code Playgroud)
我的尝试:
dic2 = {'a':[12,0,23],'b':[21,23,0],'c':[0,22,33],'d':[0,22,0]}
df = pd.DataFrame(dic2)
df[df>0]
Run Code Online (Sandbox Code Playgroud)
这将在零的地方返回NaN值,但我不知道如何获取具有这些NaN值的列。
您可以过滤更大的值,例如0布尔 DataFrame,然后用于DataFrame.dot与列名称的矩阵乘法,最后通过索引删除分隔符str:
df['e'] = df.gt(0).dot(df.columns + ',').str[:-1]
print (df)
a b c d e
0 12 21 0 0 a,b
1 0 23 22 22 b,c,d
2 23 0 33 0 a,c
Run Code Online (Sandbox Code Playgroud)