python - Pandas `pivot_table` 使用 `decimal.Decimal` 类型
问题描述
我有一个数据框,如下所示:
date id value type
2021-01-02 123123 0.3 apple
2021-01-02 123123 2.05 banana
2021-01-02 456456 2.01819 apple
2021-01-02 456456 606800000 banana
2021-01-02 567567 2.2 apple
2021-01-02 891891 2475368 banana
........
列的数据类型value
是decimal.Decimal
.
我的预期结果如下所示:
date id apple banana
2021-01-02 123123 0.3 2.05
2021-01-02 456456 2.01819 606800000
2021-01-02 567567 2.2 NaN
2021-01-02 891891 Nan 2475368
我尝试使用pandas.pivot_table
:
pivot_df = pd.pivot_table(df,
values='value',
index=['date', 'id'],
columns='type').reset_index().rename_axis(None, axis=1)
这给了我结果(只有前两列):
date id
2021-01-02 123123
2021-01-02 456456
2021-01-02 567567
2021-01-02 891891
...
有人在这里发生了什么吗?为什么我只有两列?谢谢。
更新:我看到评论和答案说不能用两列重现数据框,这太奇怪了,是因为我使用的是旧版本的熊猫吗?我仍然只有两列...我正在使用Python3.8
+pandas==1.3.0
下面是我的结果:
我设法通过使用 pandas 获得了预期的结果1.3.3
。
解决方案
您的代码对我有用,我无法重现您的问题。
我的设置:
import pandas as pd
from pandas import Timestamp
from decimal import Decimal
data = {'date': [Timestamp('2021-01-02 00:00:00'),
Timestamp('2021-01-02 00:00:00'),
Timestamp('2021-01-02 00:00:00'),
Timestamp('2021-01-02 00:00:00'),
Timestamp('2021-01-02 00:00:00'),
Timestamp('2021-01-02 00:00:00')],
'id': [123123, 123123, 456456, 456456, 567567, 891891],
'value': [Decimal('0.299999999999999988897769753748434595763683319091796875'),
Decimal('2.04999999999999982236431605997495353221893310546875'),
Decimal('2.018190000000000150492951433989219367504119873046875'),
Decimal('606800000'),
Decimal('2.20000000000000017763568394002504646778106689453125'),
Decimal('2475368')],
'type': ['apple', 'apple', 'apple', 'banana', 'apple', 'banana']}
df = pd.DataFrame(data)
枢:
pivot_df = pd.pivot_table(df,
values='value',
index=['date', 'id'],
columns='type').reset_index().rename_axis(None, axis=1)
输出:
>>> df
date id apple banana
0 2021-01-02 123123 1.17500 NaN
1 2021-01-02 456456 2.01819 606800000.0
2 2021-01-02 567567 2.20000 NaN
3 2021-01-02 891891 NaN 2475368.0
推荐阅读
- ansible - 展开复杂的ansible变量
- php - 如果其他关于变体产品和变体订阅 - woocommerce
- html - 如何在 HTML / Javascript 的单个文件中使用 PNG 序列?
- spring-boot - Spring Micro 服务如何知道 Axon Server Port
- python - 如何在不让鼠标位置影响 Pygame 中的速度的情况下将对象移向鼠标?
- cdn - 即将在 airtable custom-app 中包含一个 CDN
- delphi - 为什么我在窗体上拖动组件时,TJvHidDeviceController 会抛出“无法识别设备”?
- python - 仅当某个元素不等于给定列表中的元素时,如何编写条件语句才能执行?
- python - 如何在 Django 中使用 process_request 来检查请求是否包含我需要的标头?
- php - 按“最佳匹配”SQL 排序结果