繁体   English   中英

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

[英]Pandas: selecting columns in a DataFrame question - e.g. row[1]['Column']

我不明白这行代码

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

说明

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

遍历这些j意味着遍历这些元组。

  • j [0]指代组“键”
  • j [1]表示采用该元组的数据帧成分。 ['Data_Value']占据该数据['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']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM