我不明白这行代码
minimum.append(min(j[1]['Data_Value']))
...特别是
j[1]['Data_Value']
我知道完整的代码会返回最小值,并将其存储在称为“最小值”的列表中,但是 j [1] 在那里做什么?我尝试使用其他数字来弄清楚,但出现错误。是选择索引还是其他?
下面的完整代码。谢谢!
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib notebook
df1 = pd.read_csv('./data/C2A2_data/BinnedCsvs_d400/ed157460d30113a689e487b88dcbef1f5d64cbd8bb7825f5f485013d.csv')
minimum = []
maximum = []
month = []
df1 = df1[~(df1['Date'].str.endswith(r'02-29'))]
times1 = pd.DatetimeIndex(df1['Date'])
df = df1[times1.year != 2015]
times = pd.DatetimeIndex(df['Date'])
for j in df.groupby([times.month, times.day]):
minimum.append(min(j[1]['Data_Value']))
maximum.append(max(j[1]['Data_Value']))
答案 0 :(得分:2)
说明
pandas.groupby返回一个元组列表(键,数据框)。密钥是分组密钥;该组的关键值。例如,请参见下面。
在这些j
上循环,意味着在这些元组上循环。
['Data_Value']
占据该数据框的一列。 示例
df = pd.DataFrame({'a': [1, 1, 2], 'b': [2, 4, 6]})
df_grouped = df.groupby('a')
for j in df_grouped:
print(f"Groupby key (col a): {j[0]}")
print("dataframe:")
print(j[1])
收益:
Groupby key (col a): 1
dataframe:
a b
0 1 2
1 1 4
Groupby key (col a): 2
dataframe:
a b
2 2 6
更具可读性的解决方案
另一种更舒适的方式来获取每个月日组合的Data_Value
的最小值/最大值是:
data_value_summary = df \
.groupby([times.month, times.day]) \
.agg({'Data_Value': [min, max]}) \
['Data_Value'] # < this removed the 2nd header from the newly created dataframe
minimum = data_value_summary['min']
maximum = data_value_summary['max']