【发布时间】:2021-01-15 15:53:51
【问题描述】:
如果我想计算从 2020 年 1 月 1 日到 2020 年 3 月 31 日 3 个月之间的天数,并将结果保存在 新列中,最好的方法是什么是吗?
例子:-
2020 年 1 月 1 日应为 1,2020 年 3 月 31 日应为 91。
所以 2 将是 2020 年 1 月 2 日
2020 年 2 月 1 日将是 32
2,2020 年 3 月将是 62
使用完全相同的 column_names 显示以下文件中的前 20 行: 所以从 1 月 1 日到 3 月 31 日总共有 91 天,我希望在列名 countdays 中,所以对于 1 月,可以从日列和月列中捕获,其中月 1=jan,2=feb 和 3= March 和 days 与此相关联,因此通过使用这 2 列,我想在列名 countdays 中计算天数
Code which selects columns that I want from the csv file.
y = df[['month','day','Weekdays']]
y.head(20)
OUTPUT:
month day Weekdays
0 1 24 4.0
1 3 13 4.0
2 2 23 6.0
3 1 19 6.0
4 1 18 5.0
5 2 8 5.0
6 2 8 5.0
7 3 11 2.0
8 2 9 6.0
9 3 6 4.0
10 1 31 4.0
11 2 21 4.0
12 3 11 2.0
13 1 31 4.0
14 2 21 4.0
15 3 11 2.0
16 1 23 3.0
17 1 18 5.0
18 2 4 1.0
19 1 14 1.0
尝试使用代码生成一个新列,让我计算天数:
for m in y['month'].unique():
for d in y[y['month']==m]['day'].unique():
y.loc[(y['month']==m) &(y['day']==d),'countdays']=datetime.datetime(2020, m, d).weekday() - datetime.datetime(2020, m, d).weekday()
OUTPUT:
month day Weekdays countdays
0 1 24 4.0 0.0
1 3 13 4.0 0.0
2 2 23 6.0 0.0
3 1 19 6.0 0.0
4 1 18 5.0 0.0
... ... ... ... ...
40134409 1 13 0.0 0.0
40134410 2 18 1.0 0.0
40134411 2 20 3.0 0.0
40134412 2 3 0.0 0.0
40134413 3 3 1.0 0.0
ACTUAL GOAL:
month day Weekdays countdays
0 1 24 4.0 24
1 3 13 4.0 74
2 2 23 6.0 54
and so on for all the rows.
在 countdays 列中,我想要我在示例中提到的那些数字。因此,在索引 0 处,countdays 应显示 24,在索引 1 处应显示 73,在索引 2 处,countdays 应显示 54。
这可能会有所帮助:(1,Jan=1 and 31,Jan=31), (1,Feb = 32 and 29,Feb =60), (1,Mar = 61 and 31,Mar=91)
因此,1 月 1 日至 31 日应为 1-31 日,2 月 1-29 日应为 32-60 日,3 月 1-31 日应为 61-91 日。
如果问题不清楚,请告诉我,我正在尽力解释,非常感谢您提前提供的帮助。 :) (如果有不清楚的地方,请随时进行任何编辑或更改)
【问题讨论】:
-
不,我引用了该链接,但找不到可能的解决方案,因为我必须运行一个循环但不知道如何以及使用哪一列。 (对不起我的英语不好)
-
你问的问题是如何计算两个日期之间的天数,我提供的链接回答了这个问题。如果您确实有其他问题,请编辑帖子的标题和正文以提出该问题。
-
谢谢,我已经编辑了问题,请您再看一遍。
-
编辑后我真的看不到任何改进。目前还不清楚你在问什么。请再次编辑以提供您期望从示例数据中获得的输出示例。
-
对不起,我现在解释了我脑海中的一切,我正在努力做的事情,请你看看,如果可能的话,试着帮助我,你的帮助和善意的姿态是赞赏。谢谢,如果还不清楚,请告诉我。
标签: python-3.x pandas date datetime