簡體   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