我有一个数据集,其中有连续格式的列日期。我想向其中添加一个新列,从“日期”列中的值中取出一周。
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
如果需要int
s:
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/