【发布时间】:2020-02-18 20:12:09
【问题描述】:
我的数据是这样的
{'transaction': {'merchant': 'merchantA', 'amount': 20, 'time': '2019-02-13T10:00:00.000Z'}}
{'transaction': {'merchant': 'merchantA', 'amount': 90, 'time': '2019-02-13T11:00:00.000Z'}}
.
.
.
我想根据时间执行一些滚动操作。例如,过去“X”分钟内发生的交易数量等。
我尝试了多种方法,但无法弄清楚。 最初,我将 len(df.index) 作为索引。 (不知道这样做有没有效率)
后来我也尝试将 data['transaction']['time'] 作为索引。仍然,不起作用。
它总是给出错误窗口必须是一个整数。
df = pd.DataFrame()
df2 = pd.DataFrame()
for line in sys.stdin:
data = json.loads(line)
# df1 = pd.DataFrame(data["transaction"], index=[len(df.index)])
df1 = pd.DataFrame(data["transaction"], index=[data['transaction']['time']])
# df1 = pd.DataFrame.from_dict(data, orient='index')
df = df.append(df1)
ro = df.rolling('2min', on='time').count()
# ro = pd.get_dummies(df).rolling('2M').count()
print(ro)
# df2 = df.merge(ro)
# print(df2)
print(df)
我在这里错过了什么?
谢谢
【问题讨论】:
-
我认为问题在于
df.rolling()的规范,因为它将“2min”解释为字符串。你试过ro = df.rolling('2m', on='time').count()吗? -
是的。已经试过了。 2m 2s 等不起作用
标签: python pandas rolling-computation