我有一个名为month的列,该列包含1-12个月的编号。
示例:
Index month
0 1
1 9
2 12 我想把这个专栏分成四分之一间隔:1-3 4-6 7-9 10-12
所以每一行都会被放入其中一个间隔。我该怎么做?
发布于 2018-07-16 15:33:26
您可以使用商运算符按四分之一拆分:
df['quarter'] = df['month'] // 4 + 1也可以使用numpy.digitize显式定义回收箱:
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发布于 2018-07-16 15:28:39
您可以使用pd.cut
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)]或
pd.to_datetime(df.month,format='%m').dt.quarter
Out[308]:
0 1
1 3
2 4
Name: month, dtype: int64发布于 2018-07-16 15:34:56
您可以编写一个快速函数来完成此操作,然后将其应用到将生成季度月份范围作为字符串的DataFrame中。
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)https://stackoverflow.com/questions/51365221
复制相似问题