- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个像这样的示例数据框:
import pandas as pd
df = pd.DataFrame({"id": [0]*5 + [1]*5,
"time": ['2015-01-01', '2015-01-03', '2015-01-04', '2015-01-08', '2015-01-10', '2015-02-02', '2015-02-04', '2015-02-06', '2015-02-11', '2015-02-13'],
'hit': [0,3,8,2,5, 6,12,0,7,3]})
df.time = df.time.astype('datetime64[ns]')
df = df[['id', 'time', 'hit']]
df
将输出:
id time hit
0 0 2015-01-01 0
1 0 2015-01-03 3
2 0 2015-01-04 8
3 0 2015-01-08 2
4 0 2015-01-10 5
5 1 2015-02-02 6
6 1 2015-02-04 12
7 1 2015-02-06 0
8 1 2015-02-11 7
9 1 2015-02-13 3
然后我对时间(每天)进行了groupby
:
df.groupby(['id', pd.Grouper(key='time', freq='1D')]).hit.sum().to_frame()
结果:
hit
id time
0 2015-01-01 0
2015-01-03 3
2015-01-04 8
2015-01-08 2
2015-01-10 5
1 2015-02-02 6
2015-02-04 12
2015-02-06 0
2015-02-11 7
2015-02-13 3
但是,即使值 = 0,我也想保留每日点击量,并计算每个 id 自第一天以来的每日点击量。我想要的输出:
hit day_since
id time
0 2015-01-01 0 1
2015-01-02 0 2
2015-01-03 3 3
2015-01-04 8 4
2015-01-05 0 5
2015-01-06 0 6
2015-01-07 0 7
1 2015-02-02 6 1
2015-02-03 0 2
2015-02-04 12 3
2015-02-05 0 4
2015-02-06 0 5
2015-02-07 0 6
2015-02-08 0 7
cumcount
不起作用,因为它按组对每个项目进行编号。但就我而言,我希望计算每组的连续日期差异。
有人有什么想法吗?
最佳答案
在groupby
之后,
df = df.reset_index(level=0)
# container for resulting dataframe
dfs = pd.DataFrame()
for i in df.id.unique():
# prepare a series and upsample it within the same id
chunk = pd.Series(df.loc[df.id == i, 'hit'])
chunk = chunk.resample('1D').asfreq()
# create dataframe and construct some additional columns
chunk = pd.DataFrame(chunk, columns=['hit']).reset_index().fillna(0)
chunk['hit'] = chunk['hit'].astype(int)
chunk['id'] = i
chunk['day_since'] = chunk.groupby('id').cumcount() + 1
# accumulate id-wise dataframes 1 by 1 vertically
dfs = pd.concat([dfs, chunk], axis=0, ignore_index=True)
dfs = dfs.set_index(['id', 'time'])
你会得到:
hit day_since
id time
0 2015-01-01 0 1
2015-01-02 0 2
2015-01-03 3 3
2015-01-04 8 4
2015-01-05 0 5
2015-01-06 0 6
2015-01-07 0 7
2015-01-08 2 8
2015-01-09 0 9
2015-01-10 5 10
1 2015-02-02 6 1
2015-02-03 0 2
2015-02-04 12 3
2015-02-05 0 4
2015-02-06 0 5
2015-02-07 0 6
2015-02-08 0 7
2015-02-09 0 8
2015-02-10 0 9
2015-02-11 7 10
2015-02-12 0 11
2015-02-13 3 12
关于python - Pandas pd.Grouper 和每组的顺序日期差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51171892/
(请注意这里有一个问题 Pandas: group by and Pivot table difference ,但是这个问题是不同的。) 假设您从一个 DataFrame 开始 df = pd.Da
我在Windows 10上安装了Anaconda 3。我正在使用pd.read_csv()加载CSV文件,但收到错误消息。首先,我尝试了df=pd.read_csv(‘C:\Direct_market
我的输入数据是以下形式: gold,Program,MethodType,CallersT,CallersN,CallersU,CallersCallersT,CallersCallersN,
是否可以使用pd.merge复制以下内容 a = pd.DataFrame(dict(x=[1,2], y=[5,5])) b = pd.DataFrame(dict(x=[7,7], y=[12,1
我有一个像这样保存的数据框: Y_train_1.head() 0 4691.0 1 4661.0 2 4631.0 3 4601.0 4 4571.0 Y_train_
我有一个如下所示的 Excel 文件: CompanyName High Priority QualityIssue Customer1 Yes
题 为什么排序使用 pd.Series.sort_index使用分类索引时似乎不起作用?如何使用字母/数字以外的其他排序顺序对多索引 pd.Series 的索引进行排序? 移动电源 设置代码 impo
tt = pd.DataFrame({'a':[1,2,None,3],'b':[None,3,4,5]}) bb=pd.DataFrame(pd.isnull(tt).astype(int), in
示例代码: import pandas as pd import numpy as np sample = pd.DataFrame({"a":[1,2,3,1,2,3,1,2,3], "b":np.
我有一个 Pandas 系列和一个 Pandas 多索引数据框。 下面是一个简单的例子: iterables = [['milk', 'honey', 'dates'], ['jan', 'feb',
我拥有的: pd.Timestamp('2021-07-05 08:10:11') pd.Timestamp('2021-07-07 12:13:14') 我在找什么: [pd.Timestamp('
在使用 pandas 时,我遇到了创建新 data-Frame 的两种最常见的方法。使用pandas如下; 1. pandas.read_csv() Type: 2. pandas.DataFram
伙计们,我有一个Dataframe df= pd.DataFrame({'Point_ID':[1,2,3,1,2,1] , 'Shape_ID': [84,85,86,87,88,89],'LOL'
在 pandas datetimeindex 中,dayofweek和 weekday似乎是一样的。他们只是彼此的别名吗?我发现了这些功能 here 最佳答案 根据pandas源码定义的Datetim
我正在尝试按另一个按特定顺序排序的系列对 DataFrame (axis = 0) 进行排序。 例子:DataFrame 包含 CountryCodes 的索引:'AUS'、'BWA' ....(按字
我正在尝试使用 dask 读取 csv 文件,它给了我如下错误。但问题是我想要我的 ARTICLE_ID是 object(string) .谁能帮我成功读取数据? 回溯如下: ValueError:
为什么 pandas 有两个用于箱线图的函数:pandas.DataFrame.plot.box() 和 pandas.DataFrame.boxplot()? df = pd.DataFrame(n
我有一个多索引系列,如下所示。 > data = [['a', 'X', 'u', 1], ['a', 'X', 'v', 2], ['b', 'Y', 'u', 4], ['a', 'Z', 'u'
这个问题在这里已经有了答案: Inconsistency when setting figure size using pandas plot method (2 个答案) 关闭 4 年前。 在下面
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 6 年前。 Improve t
我是一名优秀的程序员,十分优秀!