【发布时间】:2019-07-31 23:34:40
【问题描述】:
以下代码遍历 Pandas DataFrame 的每个成员,询问项目的绝对值是否 >= 0.5,如果是,则将其值与相应的列和行名称一起附加到列表中:
record = []
for i in range(df.shape[0]):
for j in range(df.shape[1]):
if abs(df.iloc[i, j]) >= 0.5:
record.append([df.columns[j], df.index[i], df.iloc[i, j]])
当然,这可能需要一些时间,具体取决于数据帧的大小,因为执行这些嵌套循环的效率非常低...
有没有更好、更快、更 Pythonic 的方式来做到这一点?
示例输入:
colA colB colC colD
row1 -0.7 0.3 0.6 -0.2
row2 0.4 -0.3 0.8 -0.9
样本输出:
[['colA', 'row1', -0.7],
['colC', 'row1', 0.6],
['colC', 'row2', 0.8],
['colD', 'row2', -0.9]]
【问题讨论】:
-
您应该添加一个可以由我们复制的小示例数据集。根据该示例,您的预期输出是什么。
-
@Erfan,感谢您的提醒。就这么做了。
标签: python pandas loops dataframe nested