我有一個熊貓資料框串列,我想對所有這些資料框執行模式操作。
所有資料框都具有相同的布局:
索引 | 日期 | 情緒| ----- | ------ | -------- | 0 |2022-01-01| 1 | 1 |2022-02-03| -1 | 2 |2021-10-01| 0 | ...
日期是 dt.date 物件,情緒是整數(-1、0 或 1)。我想按日期獲取資料框組,情緒是原始模式(或模式串列,如果有更多)。
我用它來聚合:
df = df.groupby('date').agg(pd.Series.mode)
它幾乎適用于我的所有資料幀,只有其中一個回傳錯誤:
File "..\lib\site-packages\pandas\core\apply.py", line 420, in agg_list_like
raise ValueError("no results")
ValueError: no results
而且,在嘗試處理錯誤時:
File "..\site-packages\pandas\core\algorithms.py", line 1090, in mode
npresult = htable.mode(values, dropna=dropna, mask=mask)
File "pandas\_libs\hashtable_func_helper.pxi", line 2291, in pandas._libs.hashtable.__pyx_fused_cpdef
TypeError: No matching signature found
這是我想我的錯誤真正發生的地方。我在任何一列中都沒有 N/A 值。
我所有的表格都在以下 dtypes 中:
date object
sentiment int64
dtype: object
我嘗試洗掉所有 NA 值,但實際上什么也沒做,嘗試將每一列決議為不同的資料型別,希望它確實是一個型別錯誤,但沒有成功。
uj5u.com熱心網友回復:
只有當結果的長度為零時才會出現錯誤。當您采用的模式中只有 nans 時,就會發生這種情況,因為默認情況下.mode具有dropna=True。
import pandas as pd
pd.Series([np.nan, None]).mode()
Series([], dtype: float64) # produces value error in agg function
如果您運行df = df.groupby('date').agg(lambda x: x.count),您應該找到導致錯誤的資料框中計數為零的日期。您可以.count在運行 agg 之前將其用作過濾器以洗掉這些日期。
另外,不要認為你應該應用這樣的類成員函式。我認為
df = df.groupby('date').agg(lambda x:x.mode())
更正確,并且
df.groupby('date').mode()
我希望也能作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/527453.html
下一篇:從Dataframe創建特征矩陣
