正在经历的df在第一行中将国家/地区作为列名和日期。
我想做的是检查列表中的每个国家/地区的相应列,并在显示“已工作”的每一行中,从日期列中的该行返回日期。我得到的单个日期的回报是:
[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'])))
答案 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"))