簡體   English   中英

Python Pivot 表 KeyError

[英]Python Pivot Table KeyError

我有一個 pivot 表,我希望從中獲取值並將其添加到單獨數據框的新列中。 我想在新的Z6A8064B5DF479455555555555555555555555057DZ上添加“發行”值調用音高類型。

為了獲得 pivot 表,我使用了: pitcher_avg = pitcher_avg.pivot_table(index = ['PitcherID'], columns = ['PitchType'], values = ['ReleaseSpeed'], aggfunc = np.mean, fill_value = 0).reset_index ()

          PitcherID ReleaseSpeed             ...                                 
PitchType                     CB         CF  ...         SF         SI         SL
0             80027     0.000000  86.022476  ...   0.000000  86.953833  80.533818
1            113724     0.000000  85.923250  ...   0.000000  89.452660  77.514283
2            142254     0.000000   0.000000  ...   0.000000  93.813669  86.085831
3            145462    75.401915  86.017263  ...  83.681604   0.000000   0.000000
4            149319    83.115615  93.617160  ...   0.000000  95.678535   0.000000
..              ...          ...        ...  ...        ...        ...        ...
868          774828     0.000000   0.000000  ...   0.000000  92.273510  84.243239
869          775376    76.968184   0.000000  ...   0.000000   0.000000  87.667449
870          783719    76.871411   0.000000  ...  85.757180  90.571193  83.681105
871          796795    73.575867   0.000000  ...  83.693867   0.000000   0.000000
872          796926    59.545178   0.000000  ...   0.000000  79.432177  70.142013

我試過了

FB_same_id_conditions = [total_data['PitcherID'] == pitcher_avg['PitcherID'] & pitcher_avg['PitchType'] == 'FB'] ...但這會返回 KeyError: 'PitchType'

我也試過

total_data['CBAvgVelo'] = np.where(pitcher_avg['PitchType'],= 'FB' & total_data['PitcherID'] == pitcher_avg['PitcherID'],"",pitcher_avg['ReleaseSpeed'])

所需的 output 是這樣的:

          PitcherID    CBAvgVelo  CFAvgVelo  
0             80027     0.000000  86.022476  
1             80027     0.000000  86.022476  
2            145462    75.401915  86.017263  
3            145462    75.401915  86.017263 
4            145462    75.401915  86.017263  

您可以為此導入和使用 pandas。 它將輕松地從一個日期幀轉換為另一個 dataframe。 您可以參考 [doc1][1] & [doc2][2] & [doc3][3]。

pivoted = df.pivot(index='PitcherID', columns='CBAvgVelo', values='CFAvgVelo')\
            .reset_index()
pivoted.columns.name=None
print(pivoted)
# PitcherID    CBAvgVelo  CFAvgVelo  
#0  80027     0.000000  86.022476  
#1  80027     0.000000  86.022476 ```

Hope this helps...

  [1]: https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html
  [2]: https://pythoninoffice.com/get-values-rows-and-columns-in-pandas-dataframe/#:~:text=pandas%20get%20rows%20We%20can%20use.loc%20%5B%5D%20to,left%20blank%2C%20we%20can%20get%20the%20entire%20row.
  [3]: https://www.geeksforgeeks.org/python-pandas-dataframe/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM