我有以下df
,其中如果单元格中有数值,则返回索引值和列名:
A B C
04/04/18 Nan Nan Nan
05/04/19 Nan 4 Nan
06/04/20 Nan Nan 5
输出:
["B-05/04/19","C-06/04/20"]
是否有任何简单的方法可以同时迭代行和列而不需要嵌套循环?
最佳答案
如果列和索引值已排序,请使用 stack
与 dropna
最后在列表理解中加入 MulitIndex
:
s = df.stack().dropna()
idx = ['{}-{}'.format(b, a) for a, b in s.index]
#python 3.6+
#idx = [f'{b}-{a}' for a, b in s.index]
print (idx)
['B-05/04/19', 'C-06/04/20']
或者获取非 NaN 值的索引,获取索引值并连接在一起:
x, y = np.where(df.notnull())
idx = df.columns[y] + '-' + df.index[x]
print (idx)
Index(['B-05/04/19', 'C-06/04/20'], dtype='object')
关于python - 如何轻松地同时遍历行和列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54109986/