我在python数据框中有一个非索引列,日期类似于02/03/2017。我想提取一周中的某一天并将其作为一个单独的专栏。
答案 0 :(得分:2)
实际上有使用熊猫的解决方案。
import pandas as pd
your_df = pd.DataFrame(data={'Date': ['31/1/2018', '1/1/2018', '31/12/2018',
'28/2/2016', '3/3/2035']})
your_df['Date'] = pd.to_datetime(your_df['Date'], format="%d/%m/%Y")
your_df['Day of week (int)'] = your_df['Date'].dt.weekday
your_df['Day of week (str)'] = your_df['Date'].dt.day_name()
print(your_df)
此处有更多信息:Create a day-of-week column in a Pandas dataframe using Python
根据其他答案(不太优雅)的注释...
答案 1 :(得分:0)
首先,您需要将日期转换为日期时间对象:
import datetime
date = datetime.datetime.strptime("02/03/2017", "%d/%m/%Y")
print date.weekday()
请参阅https://docs.python.org/2/library/datetime.html#module-datetime
答案 2 :(得分:0)
您可能也对 arrow 模块感兴趣,因为它提供了许多功能和优点。在这里,我展示了它能够以一种语言环境的两种形式提供工作日名称,并以一种形式提供非英语语言环境。
>>> import arrow
>>> theDate = arrow.get('02/03/2017', 'DD/MM/YYYY')
>>> theDate
<Arrow [2017-03-02T00:00:00+00:00]>
>>> theDate.weekday()
3
>>> theDate.format('ddd', locale='en_GB')
'Thu'
>>> theDate.format('dddd', locale='en_GB')
'Thursday'
>>> theDate.format('dddd', locale='fr_FR')
'jeudi'
答案 3 :(得分:0)
我发现的解决方案是一个两步过程,因为我还没有找到让weekday()
在熊猫系列上工作的方法。
import pandas as pd
your_df = pd.DataFrame(data={'Date': ['31/1/2018', '1/1/2018', '31/12/2018',
'28/2/2016', '3/3/2035']})
dt_series = pd.to_datetime(your_df['Date'], format="%d/%m/%Y")
dow = []
for dt in range(0, len(your_df)):
dow.append(dt_series[dt].weekday())
your_df.insert(1, 'Day of week', dow)
print(your_df)
输出应如下所示:
Date Day of week
0 31/1/2018 2
1 1/1/2018 0
2 31/12/2018 0
3 28/2/2016 6
4 3/3/2035 5
注意:
to_datetime()
的format参数。