我正在使用以下方法写入文件名后附加日期的 csv 文件。
outpath = r'C:\test'
filename = "filename_"+(time.strftime("%Y%m%d")+".csv")
df.to_csv(outpath + "\\" + filename)
print outpath + "\\" + filename
C:\test\filename_20140621.csv
但是我遇到了一个问题,当例程跨越午夜并且添加的日期不正确时。
我在 DataFrame df 中有正确的日期,如下所示:
df['Date/Time'].head()
Out[54]:
0 2014-06-20
1 2014-06-20
2 2014-06-20
3 2014-06-20
4 2014-06-20
Name: Date/Time, dtype: object
我想在文件名中使用这个日期,但找不到正确的引用方式
例如,我将这个日期放在一个名为“date”的新数据框中,只有一列:
date = pd.to_datetime(df['Date/Time'])
date.head()
Out[15]:
0 2014-06-20
1 2014-06-20
2 2014-06-20
3 2014-06-20
4 2014-06-20
Name: Date/Time, dtype: datetime64[ns]
并尝试了以下方法:
filename = "filename_"+ date._slice(slice(1))+".csv")
...以及各种类似的东西。
谁能告诉我如何设置文件名以包含 DataFrame 中的日期?
非常感谢任何帮助。
最佳答案
提供您的日期
系列,您可以根据需要选择第一个或至少:
>>> date.head()
0 2014-06-20
1 2014-06-20
2 2014-06-20
3 2014-06-20
4 2014-06-20
Name: Date/Time, dtype: datetime64[ns]
>>> date.iloc[0].strftime("%Y%m%d")
'20140620'
>>> date.min().strftime("%Y%m%d")
'20140620'
.iloc[0]
访问第一行(不管它的索引是 0 还是 217123),.min()
扫描他们全部并找到最小的。 (如果你知道它们都是一样的,或者你想要的将是第一个,那么 .iloc[0]
将比 .min()
更快,当然可以,但也许它们没有排序,您想要最小的..或最大的,使用 max()
。)
然后你可以很容易地创建一个文件名:
>>> datestr = date.min().strftime("%Y%m%d")
>>> 'filename_{}.csv'.format(datestr)
'filename_20140620.csv'
关于Python:如何写入 CSV 并将 DataFrame 中的日期附加到文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24338871/