1 回答
TA贡献1790条经验 获得超9个赞
如果可以暂时或永久升级到较新版本的 pandas,请尝试升级到较新版本的 pandas,因为pivot早期版本的 pandas 中存在错误。
例如,您可以这样做:pip install pandas==1.1.3升级到他们修复的特定版本pivot。
pip install pandas==1.1.3
# then restart the kernel
import pandas as pd
# df = ....
df = pd.pivot(df, values='value', index=['referenceDate', 'CompanyId'], columns=['data_item', 'N'])
df
Out[1]:
data_item A
N 1 2 3
referenceDate CompanyId
2020-01-31 1 0.1 NaN NaN
2 NaN 0.2 NaN
3 NaN NaN 0.3
然后,您可以随时返回pip install pandas==0.25.3。您可以通过 jupyter notebok 完成这一切。确保每次切换版本时都重新启动内核。
我当前的 pandas 版本是1.0.1,所以我也收到同样的错误!
pip install pandas==1.0.1
#restart kernel
import pandas as pd
#df = ...
df = pd.pivot(df, values='value', index=['referenceDate', 'CompanyId'], columns=['data_item', 'N'])
df
错误:
ValueError Traceback (most recent call last)
<ipython-input-2-11248dbe0eba> in <module>
1 df = d.copy()
----> 2 df = pd.pivot(df, values='value', index=['referenceDate', 'CompanyId'], columns=['data_item', 'N'])
3 df
C:\Users\david.erickson\Anaconda3\lib\site-packages\pandas\core\reshape\pivot.py in pivot(data, index, columns, values)
445 )
446 else:
--> 447 indexed = data._constructor_sliced(data[values].values, index=index)
448 return indexed.unstack(columns)
449
C:\Users\david.erickson\Anaconda3\lib\site-packages\pandas\core\series.py in __init__(self, data, index, dtype, name, copy, fastpath)
290 if len(index) != len(data):
291 raise ValueError(
--> 292 f"Length of passed values is {len(data)}, "
293 f"index implies {len(index)}."
294 )
ValueError: Length of passed values is 3, index implies 2.
添加回答
举报