嗨我想转换我的 Dataframe 从
df = pd.DataFrame({
'date': [
'2019-08-01', '2019-12-01',
'2019-23-01', '2019-15-01',
'2020-26-02', '2020-10-10',
'2020-08-10', '2021-01-04'
],
'loc': [
'axp','axp', 'axp', 'axp',
'axe', 'axp', 'axp', 'axe'
],
'category': [
'domestic', 'domestic', 'domestic',
'domestic',
'wild', 'domestic', 'domestic', 'wild'
],
'status': [
'found', 'found', 'not found', 'found',
'found', 'found', 'found', 'not found'
]
})
转换为这种格式,其中每个loc
都减少到每月和每年相关category
和status
的计数
| 月地点年|n_国内|n_wild| n_发现|n_未找到|
| --------------|--------------|--------------|--------------|--------------|
| 2019 - 01 - 21|四|0| 3| 1|
| 2020年02月02日|0| 1| 1| 0|
| 2020年10月10日|2| 0| 2| 0|
| 2021年4月4日|0| 1| 0| 1|
我已经尝试使用下面的代码,但还没有得到预期的结果
df = df.resample('M')['category'].value_counts().to_frame().rename({'category':'count'},axis=1)
df = df.pivot_table(index='date', columns='category')
1条答案
按热度按时间brccelvz1#
对
loc_mnth_yr
列使用DataFrame.assign
,然后按DataFrame.melt
和crosstab
的计数值反透视:如果顺序很重要,请用途: