gpt4 book ai didi

python-3.x - 显示多个满足特定条件的数据-PANDAS 中的问题

转载 作者:行者123 更新时间:2023-12-01 00:39:41 24 4
gpt4 key购买 nike

我正在使用 Python 在 PANDAS 中工作,并且正在查看天气 CSV 文件。我可以毫无问题地从中提取数据。但是,我无法提取符合某些标准的数据,例如何时显示哪些天的温度高于 100 度。

到目前为止,我有这个作为我的代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

df = pd.read_csv('csv/weather.csv')

print(df[[df.MaxTemperatureF > 100 ]])

最后一行是我认为我有问题的地方。在执行以下步骤后,我现在得到的错误回溯如下:
Traceback (most recent call last):
File "weather.py", line 40, in <module>
print(df[df['MaxTemperatureF' > 100]])
TypeError: unorderable types: str() > int()
Mikes-MBP-2:dataframes mikecuddy$ python3 weather.py
Traceback (most recent call last):
File "weather.py", line 41, in <module>
print(df[[df.MaxTemperatureF > 100 ]])
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-
packages/pandas/core/frame.py", line 1991, in __getitem__
return self._getitem_array(key)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-
packages/pandas/core/frame.py", line 2028, in _getitem_array
(len(key), len(self.index)))
ValueError: Item wrong length 1 instead of 360.

我一直在做一个教程: http://www.gregreda.com/2013/10/26/working-with-pandas-dataframes/再次,任何帮助都会很棒!谢谢!

df.info() 信息:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 360 entries, 0 to 359
Data columns (total 23 columns):
PST 360 non-null object
MaxTemperatureF 359 non-null float64
Mean TemperatureF 359 non-null float64
Min TemperatureF 359 non-null float64
Max Dew PointF 359 non-null float64
MeanDew PointF 359 non-null float64
Min DewpointF 359 non-null float64
Max Humidity 359 non-null float64
Mean Humidity 359 non-null float64
Min Humidity 359 non-null float64
Max Sea Level PressureIn 359 non-null float64
Mean Sea Level PressureIn 359 non-null float64
Min Sea Level PressureIn 359 non-null float64
Max VisibilityMiles 355 non-null float64
Mean VisibilityMiles 355 non-null float64
Min VisibilityMiles 355 non-null float64
Max Wind SpeedMPH 359 non-null float64
Mean Wind SpeedMPH 359 non-null float64
Max Gust SpeedMPH 211 non-null float64
PrecipitationIn 360 non-null float64
CloudCover 343 non-null float64
Events 18 non-null object
WindDirDegrees 360 non-null int64
dtypes: float64(20), int64(1), object(2)
memory usage: 64.8+ KB
None

最佳答案

对于最高温度,您可以指定转换器函数:

df = pd.read_csv('csv/weather.csv', converters={'MaxTemperatureF':float})

编辑:正如@ptrj 在评论中提到的,您可以这样做来代替 np.nan对于 MaxTemperatureF 中的字符串值柱子:
df = pd.read_csv('csv/weather.csv', 
converters={'MaxTemperatureF':
lambda x: try: return float(x);
except ValueError: return np.nan;})

Edit2:@ptrj 的解决方案,因为他无法在评论中写出来...
def my_conv(x): 
try:
return float(x)
except ValueError:
return np.nan

df = pd.read_csv('csv/weather.csv', converters={'MaxTemperatureF': my_conv})

其他事情:
  • 如果 csv 文件的第一行有标题,则不要通过 header=0 .
  • 由于您现在已经有了标题,因此您无需指定 cols=...
  • 默认sep是 ',' 所以你不需要指定它。
  • 关于python-3.x - 显示多个满足特定条件的数据-PANDAS 中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38377998/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com