- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个包含日期、买入和卖出值的数据框,并在该数据框上执行pivot_table
获取每个有效日期的所有买入/卖出值(value)。
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 (most recent call last): File "", line 1, in
File "ext2\vc12_win32\lib\python2.7\site-packages\pandas\tools\pivot.py", line 114, in pivot_table
File "ext2\vc12_win32\lib\python2.7\site-packages\pandas\core\groupby.py", line 729, in agg
File "ext2\vc12_win32\lib\python2.7\site-packages\pandas\core\groupby.py", line 2978, in aggregate
File "ext2\vc12_win32\lib\python2.7\site-packages\pandas\core\groupby.py", line 1227, in _python_agg_general
File "ext2\vc12_win32\lib\python2.7\site-packages\pandas\core\groupby.py", line 1733, in agg_series
File "ext2\vc12_win32\lib\python2.7\site-packages\pandas\core\groupby.py", line 1767, in _aggregate_series_pure_python
ValueError: Function does not reduce
最佳答案
甚至考虑使用 pivot
的 groupby
:
df1 = testDf.groupby(['Date', 'Scenario'])['Value'].apply(lambda x: list(x)).reset_index()\
.pivot(index='Date', columns='Scenario', values='Value').fillna('')
# Scenario Buy Sell
# Date
# 20170323 [400]
# 20170324 [400]
# 20170325 [400, 401]
# Scenario Buy Sell
# Date
# 20170321 [400, 401]
# 20170323 [400]
# 20170324 [400]
关于python - Pandas hub_table 与 aggfunc 在不同数据上的工作方式有所不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43497792/
df: id flag year amt 1 'Y' 2016 100 1 'Y' 2017 200 1 'Y' 2018 100 2 NaN 2016 100 2 'Y
当我尝试使用数据透视表对值进行分组时,我得到一个空数据框。让我们首先创建一些愚蠢的数据: import pandas as pd df = pd.DataFrame({"size":['large',
我有以下数据框: import pandas as pd import datetime df = pd.DataFrame({'T': [datetime.datetime.now(), datet
我有以下df code y_m date_1 date_2 10 201710 2017-10-01 2017-10-06 10 20
我有一组属性,值对如下: date,01-01-2018 product,eggs price, 5 date,01-10-2018 product,milk price,3 我想创建一个像这样的表
我需要一些帮助来弄清楚如何将 pandas 数据帧转换为具有给定索引和列列表的表(而不是 pandas 自动选择索引和列的默认行为)。如果这是微不足道的,我们深表歉意。我是 python/pandas
当我尝试过滤 Pandas 数据框时,如下面的示例所示,它工作正常: print data[data['ProductCategory'].isin(['ProductA'])] 但是当我尝试对生成的
我有一个包含日期、买入和卖出值的数据框,并在该数据框上执行pivot_table获取每个有效日期的所有买入/卖出值(value)。 data = [('20170325', 'Buy', 400 ),
我注意到,当有多个 aggfunc 例如(“count”、“mean”、“sum”)时,我无法设置 margins=True。 它会抛出KeyError: 'Level None not found'
我正在尝试使用以下代码在一张图中创建两个条形图: import matplotlib.pyplot as plt import pandas as pd df = read_csv(...) temp
cat1 cat2 col_a col_b 0 (34.0, 38.0] (15.9, 47.0
我正在使用这种形式的多值数据透视表: pivot = df.pivot_table(index=[indices], columns=['column'], values=['start_value'
我是一名优秀的程序员,十分优秀!