繁体   English   中英

在 pandas dataframe 上循环(迭代) - 如何选择所需的值?

[英]Looping (iteration) over a pandas dataframe - how to choose desired values?

我有一个包含机场信息的 DataFrame。 使用 for 循环,我想从报告的最近一年中提取机场名称和总座位数。 我只对高于 20000 的值感兴趣。

此代码打印出所有名称和座位:

for name, seats in zip(sa_airports['Name'], sa_airports['TotalSeats']):
    print(name, ' : ', seats)

我试过这个:

for name, seats in zip(sa_airports['Name'], sa_airports['TotalSeats']):
    if sa_airports['TotalSeats'] > 20000:
        print(name, ' : ', seats)

但是出现了错误:Series 的真值不明确。 使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

正因为如此,我试图将每个选项都放入循环中,但没有给我想要的结果。 例子:

for name, seats in zip(sa_airports['Name'], sa_airports['TotalSeats']):
    if (sa_airports['TotalSeats'] > 20000).any():
        print(name, ' : ', seats)

此代码检查 totalseats 中的任何值是否 > 20000 并且为真,因此它会打印出所有内容

一般来说,您应该(几乎)永远不要使用带有 Pandas 的循环。 请改用矢量化操作。 它们性能更高,更容易理解。

filtered = sa_airports.loc[sa_airports['TotalSeats'] > 20000][['Name', 'TotalSeats']]
for name, seats in filtered.itertuples(index=False):
    print(name, ' : ', seats)

暂无
暂无

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

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