繁体   English   中英

遍历熊猫数据框

[英]Iterating through a Pandas Dataframe

我试图找出如何遍历此熊猫DataFrame中的每个值,以查看其绝对值是否高于某个定义的阈值,例如:.01> abs(value)。

  APP ENABLED DEVICES  APPLE/MACINTOSH      CN  APPLECARE  BARGAIN BOOKS
0             0.017685                 0.000123   0.009362       0.039916
1             0.014884                 0.009920   0.004747      -0.000653
2            -0.044820                -0.054319   0.001925      -0.179533
3            -0.014449                 0.193068  -0.006028      -0.026057
4             0.047403                -0.046199  -0.047391       0.060473

我需要最终输出看起来像这样

[{APP ENABLED DEVICES:0.017685,BARGAIN BOOKS:0.039916},
 {APP ENABLED DEVICES:0.014884},
 ...]

因此,它看起来像是字典列表, 每行都是一个单独的小节 列表中仅应包含键值对,其值必须高于定义的阈值。 这有可能吗? 如果可以的话,请有人指导我如何做到这一点? 抱歉,python对我来说还是一个相对较新的东西……谢谢

PS这只是数据集的一小部分。 完整数据框中的列总数要大得多,因此明确命名各个列是不可行的。

您可能真的不想迭代,因为熊猫为您提供了执行大多数事情的更有效方法。 第一步将是获取高于阈值的所有行。 您可以这样做:

df = df[df["APPLE/MACINTOSH"] > 0.01]

然后您需要使用to_dict将其转换为字典

下面的示例将为您提供所需的输出,并显示您可以做的一些操作数据框的操作,而无需遍历每个项目。

import pandas as pd
pdf = pd.DataFrame.from_dict({'APP': [0.013, 0.42, -0.23, 0.06],
                              'BOOKS': [-1.3, 0.04, 0.54, 0.01],
                              'CN': [0.012, -0.03, 0.003, 0.5]})
abs_pdf = pdf.abs()
value = 0.01
sel = abs_pdf[abs_pdf > value]

results = list()
by_col = sel.T
for col in by_col:
    results.append(by_col[col].dropna().to_dict())
print(results)

这将产生:

[{'APP': 0.012999999999999999, 'BOOKS': 1.3, 'CN': 0.012},
 {'APP': 0.41999999999999998,
  'BOOKS': 0.040000000000000001,
  'CN': 0.029999999999999999},
 {'APP': 0.23000000000000001, 'BOOKS': 0.54000000000000004},
 {'APP': 0.059999999999999998, 'CN': 0.5}]

如果需要不同的输出,则应该可以更改代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM