Python熊猫格式添加到列表中的datetime.datetime对象

时间:2019-02-13 09:50:21

标签: python pandas datetime

正在经历的df在第一行中将国家/地区作为列名和日期。

enter image description here

我想做的是检查列表中的每个国家/地区的相应列,并在显示“已工作”的每一行中,从日期列中的该行返回日期。我得到的单个日期的回报是:

[datetime.datetime(2017, 2, 1, 0, 0)]

我需要的格式是201901,以便使用此格式,然后进一步创建文件名。那就是为什么我添加了str()的原因,因为否则我无法为文件名创建日期和国家/地区的组合。到目前为止,我唯一的解决方案是进一步剥离和格式化此字符串,但我认为这不是最佳解决方案。

dates[]   

for country in lst :

    dates.append(str(df.lookup((df.loc[df[country] == 'Worked'].index),['Date'])))

2 个答案:

答案 0 :(得分:1)

import pandas as pd
import datetime
df = pd.DataFrame({
    "Date": [
    datetime.datetime(2017,1,1,0,0,0),datetime.datetime(2018,1,1,0,0,0),datetime.datetime(2019,1,1,0,0,0),
        ],
    "Country":["Worked","Uploaded","Worked"],
})
dates = df[df["Country"]=="Worked"]["Date"].dt.strftime("%Y%m").tolist()
dates = [x + '_country.xlsx' for x in dates]

# dates should now look like this:
# ['201701_country.xlsx', '201901_country.xlsx']

在这里,我使用.dt来访问特定于日期时间的功能,然后strftime()将其转换为所需的日期和时间格式。

Here%Y类型字符及其含义的完整列表

答案 1 :(得分:1)

This should work, check it out.

dates = []   

for country in lst :

    dates.append(df[df.Country == country].Date.dt.strftime("%Y%m"))