来自熊猫新手:我的数据看起来基本上是这样的 -
data1=pd.DataFrame({'Dir':['E','E','W','W','E','W','W','E'], 'Bool':['Y','N','Y','N','Y','N','Y','N'], 'Data':[4,5,6,7,8,9,10,11]}, index=pd.DatetimeIndex(['12/30/2000','12/30/2000','12/30/2000','1/2/2001','1/3/2001','1/3/2001','12/30/2000','12/30/2000']))
data1
Out[1]:
Bool Data Dir
2000-12-30 Y 4 E
2000-12-30 N 5 E
2000-12-30 Y 6 W
2001-01-02 N 7 W
2001-01-03 Y 8 E
2001-01-03 N 9 W
2000-12-30 Y 10 W
2000-12-30 N 11 E
Run Code Online (Sandbox Code Playgroud)
我希望将它分组为多个级别,然后执行cumsum():
例如,像running_sum=data1.groupby(['Bool','Dir']).cumsum()
< - (不起作用)
输出看起来像:
Bool Dir Date running_sum
N E 2000-12-30 16
W 2001-01-02 7
2001-01-03 16
Y E 2000-12-30 4
2001-01-03 12
W 2000-12-30 16
Run Code Online (Sandbox Code Playgroud)
我的"喜欢"代码显然不是很接近.我做了很多尝试,并学到了很多关于如何不这样做的新事物.
谢谢你提供的所有帮助.
我有一个小标题,其中有一列格式为日期。出于问题的目的,我将生成类似的数据(真实数据要大得多!):
> dates = tribble(~YrMon, "2011-01-01", "2011-02-01", "2011-03-01", "2011-04-01")
%>% mutate(YrMon = as.Date(YrMon))
> dates
# A tibble: 4 x 1
YrMon
<date>
1 2011-01-01
2 2011-02-01
3 2011-03-01
4 2011-04-01
Run Code Online (Sandbox Code Playgroud)
我只想隔离几个月。当我在不使用管道的情况下提取月份时,它按预期工作:
> format(dates$YrMon, "%m")
[1] "01" "02" "03" "04"
Run Code Online (Sandbox Code Playgroud)
然而,当我使用 tidyverse 管道做我认为应该是相同的事情时,我得到了 gobbledygook (我认为这是返回的 tibble 的某种格式):
> dates %>% format(.$YrMon, "%m")
[1] "\033[38;5;246m# A tibble: 4 x 1\033[39m"
[2] " YrMon "
[3] " \033[3m\033[38;5;246m<date>\033[39m\033[23m "
[4] "\033[38;5;250m1\033[39m 2011-01-01"
[5] "\033[38;5;250m2\033[39m 2011-02-01"
[6] "\033[38;5;250m3\033[39m 2011-03-01"
[7] "\033[38;5;250m4\033[39m 2011-04-01"
Run Code Online (Sandbox Code Playgroud)
发生了什么事,有没有办法使用 …