python - 如何轻松地同时遍历行和列?

标签 python pandas

我有以下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"]

是否有任何简单的方法可以同时迭代行和列而不需要嵌套循环?

最佳答案

如果列和索引值已排序,请使用 stackdropna最后在列表理解中加入 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/

相关文章:

python - 从 QPersistentModelIndex 获取 QModelIndex

python - 值错误: unsupported format character '{' (0x7b) at index

python - "Memory Leak"与 grequests?

python - 在 Python 的 __init__(self) 中寻址实例名称字符串

python - 如何计算两个 Pandas 列之间的时间差

python登录论坛

python - 如何从 pandas date_range 中删除日期

python - 删除括号和括号中的内容(如果存在于 df 列中)

python - 按年份对 Pandas 时间序列进行分组

Pandas Dataframe 重命名行中的重复值