首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫的间隔群

熊猫的间隔群
EN

Stack Overflow用户
提问于 2018-07-16 15:23:26
回答 3查看 4.1K关注 0票数 3

我有一个名为month的列,该列包含1-12个月的编号。

示例:

代码语言:javascript
复制
  Index     month  
  0          1        
  1          9         
  2          12       

我想把这个专栏分成四分之一间隔:1-3 4-6 7-9 10-12

所以每一行都会被放入其中一个间隔。我该怎么做?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-16 15:33:26

您可以使用商运算符按四分之一拆分:

代码语言:javascript
复制
df['quarter'] = df['month'] // 4 + 1

也可以使用numpy.digitize显式定义回收箱:

代码语言:javascript
复制
df['quarter'] = np.digitize(df['month'], [3, 6, 9], right=True) + 1

print(df)

   Index  month  quarter
0      0      1        1
1      1      9        3
2      2     12        4
票数 4
EN

Stack Overflow用户

发布于 2018-07-16 15:28:39

您可以使用pd.cut

代码语言:javascript
复制
pd.cut(df.month,[0,4,7,10,13],right=False)
Out[298]: 
0      [0, 4)
1     [7, 10)
2    [10, 13)
Name: month, dtype: category
Categories (4, interval[int64]): [[0, 4) < [4, 7) < [7, 10) < [10, 13)]

代码语言:javascript
复制
pd.to_datetime(df.month,format='%m').dt.quarter
Out[308]: 
0    1
1    3
2    4
Name: month, dtype: int64
票数 2
EN

Stack Overflow用户

发布于 2018-07-16 15:34:56

您可以编写一个快速函数来完成此操作,然后将其应用到将生成季度月份范围作为字符串的DataFrame中。

代码语言:javascript
复制
def quarter_range(x):
    q = int(np.floor(x / 4.) + 1)
    qr = "-".join([str(q), str(q+2)])
    return qr

df["quarter_label"] = df["month"].apply(quarter_range)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51365221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档