首页 > 解决方案 > 如何使用函数根据两个参数抓取数据

问题描述

我正在尝试创建一些风数据的一些图,但是,我无法使用两个参数选择特定数据,即一天中的小时数和月份。我正在尝试使用函数来查找获取特定数据但得到错误

Traceback (most recent call last):
  File "/Users/Cpower18/Documents/Tryong_again.py", line 47, in <module>
    plt.plot(hr, hdh(hr, mn2))
  File "/Users/Cpower18/Documents/Tryong_again.py", line 37, in hdh
for n, k in hr, mn2:
ValueError: too many values to unpack (expected 2)

我目前正在使用数据框根据日期对数据进行排序,并使用一个函数来获取特定数据。我只用一个变量就做到了这一点,那就是一天中的时间,但是,不是两个变量。

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

warnings.simplefilter(action='ignore', category=FutureWarning)

data = pd.read_csv('merged_1.csv')

df = pd.DataFrame(data)

df['Wind Spd (km/h)'] = pd.to_numeric(df['Wind Spd (km/h)'], errors ='coerce')

df['Date/Time'] = pd.to_datetime(df['Date/Time'], errors = 'coerce')

df = df.set_index(pd.DatetimeIndex(df['Date/Time']))

df['hour'] = df.index.hour

df['month'] = df.index.month


mn1 = np.linspace(1, 2, 2)

mn2 = np.linspace(3, 5, 3)

mn3 = np.linspace(6, 8, 3)

mn4 = np.linspace(9, 11, 3)

mn5 = np.linspace(12)

hr = np.linspace(0, 23, 24)


def hdh(hr, mn2):
    out = []
    for n, k in hr, mn2:

        t = (df['hour'] == n) & (df['month'] == k)

        s = t['Wind Spd (km/h)'].mean(axis = 0) / 3.6

        out.append(s)

    return out

plt.plot(hr, hdh(hr, mn2))
plt.xlabel('Hour')
plt.ylabel('Wind Speed (m/s)')
plt.xlim(0, 24)
plt.ylim(2.85, 4.75)
plt.title('ShearENV Anual Average Hourly Wind Speed')
plt.grid(which = 'both', axis='both')
plt.show()`

预期结果应该是符合特定时间(例如 01:00)和特定季节(例如 3 到 5 个月)的数据列表。截至目前,我只收到错误,感谢您的帮助。

标签: pythonfunctiondataframefor-loopdata-analysis

解决方案


推荐阅读