![](/img/trans.png)
[英]How to iterate over Pandas dataframe row & create a dataframe in each iteration
[英]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.