python - 从现有的日期列创建新列 "Week"

标签 python pandas datetime

我有一个数据集,其中有连续格式的列日期。我想向其中添加一个新列,从“日期”列中的值中取出一周。

A    B
1    20050121
2    20050111
3    20050205
4    20050101

这里的 B 列表示 YEAR|MONTH|DAY 格式的日期,我想向此数据集添加一个新列,该列从数据集中获取月份日期并告诉我们它属于哪一周,例如这个:

A    B           C
1    20050121    3
2    20050111    2
3    20050205    5
4    20050101    1

这一周是从2005年1月1日开始的。我想到了将moth和date的值分开,然后根据这两个值进行计算,我该怎么做?

最佳答案

看来你需要 strftime通过 http://strftime.org/ :

df['C'] = pd.to_datetime(df['B'], format='%Y%m%d').dt.strftime('%W')
print (df)
   A         B   C
0  1  20050121  03
1  2  20050111  02
2  3  20050205  05
3  4  20050101  00

如果需要ints:

df['C'] = pd.to_datetime(df['B'], format='%Y%m%d').dt.strftime('%W').astype(int)
print (df)
   A         B  C
0  1  20050121  3
1  2  20050111  2
2  3  20050205  5
3  4  20050101  0

如果使用weekofyear第一周获得更多 50:

df['C'] = pd.to_datetime(df['B'], format='%Y%m%d').dt.weekofyear
print (df)
   A         B   C
0  1  20050121   3
1  2  20050111   2
2  3  20050205   5
3  4  20050101  53

但有可能掩盖它:

dates = pd.to_datetime(df['B'], format='%Y%m%d')
m = (dates.dt.month == 1) & (dates.dt.weekofyear > 50)
df['C'] = np.where(m, 1, dates.dt.weekofyear)
print (df)
   A         B  C
0  1  20050121  3
1  2  20050111  2
2  3  20050205  5
3  4  20050101  1

关于python - 从现有的日期列创建新列 "Week",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46021222/

相关文章:

python - Opencv Video Capture .read功能在不同PC上的不同结果

c# - 如何选择每周的最新日期时间? C#

python - 使用什么方法来确定用户是否连接到 facebook

python - Django 管理表单可以使用跨站请求伪造 (CSRF) 进行操作

python - 在 Pandas 中方便地将 DatetimeIndex 拆分为日期和时间 MultiIndex

具有 3 级多索引的 Pandas 数据透视表

python - 将 Colormap 功能与 Pandas.DataFrame.Plot 结合使用

r - strptime、as.POSIXct 和 as.Date 返回意外的 NA

AngularJS - 无法使用 ngRepeat orderBy 对 DateTime 进行排序

python - 如何在 .pyi 文件中仅声明原始模块中的部分字段?