我有 Date ,购买和 Sell 值的数据框,并在该数据框上执行pivot_table
以获取所有数据购买/出售每个有效日期的价值。
data = [('20170325', 'Buy', 400 ),
('20170325', 'Buy', 401 ),
('20170323', 'Buy', 400 ),
('20170324', 'Sell', 400 )]
testDf = pd.DataFrame(data, columns=['Date', 'Scenario', 'Value'])
df1 = pd.pivot_table(testDf, columns='Scenario', index='Date', values='Value',
fill_value = '', aggfunc=lambda x: x.tolist() if len(x)>1 else x)
df1
# Scenario Buy Sell
# Date
# 20170323 400
# 20170324 400
# 20170325 [400, 401]
但是当我的数据稍微改变时,pivot_table
会抛出错误: ValueError:函数不会减少。无法理解为什么。这是不同数据的错误。请注意 20170325 的日期更改为 20170321 。
data = [('20170321', 'Buy', 400 ),
('20170321', 'Buy', 401 ),
('20170323', 'Buy', 400 ),
('20170324', 'Sell', 400 )]
testDf = pd.DataFrame(data, columns=['Date', 'Scenario', 'Value'])
df1 = pd.pivot_table(testDf, columns='Scenario', index='Date', values='Value',
fill_value = '',aggfunc=lambda x: x.tolist() if len(x)>1 else x)
Traceback(最近一次调用最后一次):文件“”,第1行,in
文件 “EXT2 \ vc12_win32 \ LIB \ python2.7 \站点包\大熊猫\工具\ pivot.py” 第114行,在pivot_table
文件中 “EXT2 \ vc12_win32 \ LIB \ python2.7 \站点包\大熊猫\核心\ groupby.py” 第729行,在agg
文件中 “EXT2 \ vc12_win32 \ LIB \ python2.7 \站点包\大熊猫\核心\ groupby.py” 第2978行,总计为文件 “EXT2 \ vc12_win32 \ LIB \ python2.7 \站点包\大熊猫\核心\ groupby.py” 第1227行,在_python_agg_general中 “EXT2 \ vc12_win32 \ LIB \ python2.7 \站点包\大熊猫\核心\ groupby.py” 第1733行,在agg_series中文件 “EXT2 \ vc12_win32 \ LIB \ python2.7 \站点包\大熊猫\核心\ groupby.py” 第1767行,在_aggregate_series_pure_python中为ValueError: 功能不会降低
答案 0 :(得分:1)
考虑CREATE CLASS Account extends V
CREATE PROPERTY Account.gender STRING
ALTER PROPERTY Account.gender REGEXP "M|F"
groupby
:
pivot
答案 1 :(得分:0)
我的第一个数据集也出现了同样的错误。我相信这是由于一天的重复值。
这似乎是来自此SO post.
的大熊猫的一个功能让我们尝试将你的tolist()转换为使用元组。
df1 = pd.pivot_table(testDf, columns='Scenario', index='Date', values='Value', fill_value = '',aggfunc=lambda x: tuple(x))