熊猫:在DataFrame问题中选择列-例如行[1] ['列']

时间:2019-08-14 10:29:01

标签: python pandas numpy

我不明白这行代码

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']))

1 个答案:

答案 0 :(得分:2)

说明

pandas.groupby返回一个元组列表(键,数据框)。密钥是分组密钥;该组的关键值。例如,请参见下面。

在这些j上循环,意味着在这些元组上循环。

  • j [0]是指组“键”
  • j [1]表示获取该元组的数据帧分量。 ['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']