pandas pivot_tables 不适用于日期数据(没有要聚合的数字类型)
pandas pivot_tables doesn't work with date data (No numeric types to aggregate)
我有以下数据框:
index id code data date
0 AZ234 B213 apple 2020-09-01 <- duplicate id, code, data
1 AZ234 B213 apple 2022-02-02 <- duplicate id, code, data
2 AZ234 B213 banana 2020-07-01
3 AZ234 B213 orange 2020-05-11
4 AL612 B309 apple 2020-12-05
5 AL612 B309 banana 2020-07-21
6 AL612 B309 orange 2020-09-21
...
我想创建数据透视表 table 以获得以下 table:
id code apple banana orange
AZ234 B213 2020-09-01 2020-07-01 2020-05-11
AL612 B309 2020-12-05 2020-07-21 2020-09-21
...
我尝试使用 pivot_table (pandas):
pd.pivot_table(df, values='date', index=['id','code'],
columns=['data'])
但是我得到这个错误:
DataError: No numeric types to aggregate
我已阅读 但它似乎有点不同,因为我不想更改列,而且当我尝试 set_index 使用代码和 ID ( “
ValueError:索引包含重复条目,无法重塑”)。
我的目标是用日期作为 table 的值创建数据透视表 table。
每个 id, date, data
都有重复项,因此有必要添加一些聚合函数:
如果有日期时间:
df['date'] = pd.to_datetime(df['date'])
df.pivot_table(values='date', index=['id','code'], columns=['data'], aggfunc='first')
df.pivot_table(values='date', index=['id','code'], columns=['data'], aggfunc='max')
如果有字符串:
print (df['date'].dtype)
df.pivot_table(values='date', index=['id','code'], columns=['data'], aggfunc=','.join)
我有以下数据框:
index id code data date
0 AZ234 B213 apple 2020-09-01 <- duplicate id, code, data
1 AZ234 B213 apple 2022-02-02 <- duplicate id, code, data
2 AZ234 B213 banana 2020-07-01
3 AZ234 B213 orange 2020-05-11
4 AL612 B309 apple 2020-12-05
5 AL612 B309 banana 2020-07-21
6 AL612 B309 orange 2020-09-21
...
我想创建数据透视表 table 以获得以下 table:
id code apple banana orange
AZ234 B213 2020-09-01 2020-07-01 2020-05-11
AL612 B309 2020-12-05 2020-07-21 2020-09-21
...
我尝试使用 pivot_table (pandas):
pd.pivot_table(df, values='date', index=['id','code'],
columns=['data'])
但是我得到这个错误:
DataError: No numeric types to aggregate
我已阅读
我的目标是用日期作为 table 的值创建数据透视表 table。
每个 id, date, data
都有重复项,因此有必要添加一些聚合函数:
如果有日期时间:
df['date'] = pd.to_datetime(df['date'])
df.pivot_table(values='date', index=['id','code'], columns=['data'], aggfunc='first')
df.pivot_table(values='date', index=['id','code'], columns=['data'], aggfunc='max')
如果有字符串:
print (df['date'].dtype)
df.pivot_table(values='date', index=['id','code'], columns=['data'], aggfunc=','.join)