Python:如何写入 CSV 并将 DataFrame 中的日期附加到文件名

标签 python date csv filenames

我正在使用以下方法写入文件名后附加日期的 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/

相关文章:

python - 无法使用 python 将文本作为 UTF-8 写入文件

python - 如何从 Elasticsearch 7.X.X 中获取超过 10000 条记录

php - 将 CSV 信息推送到表时 SQL DATE 类型变量为 NULL

date - SAS 日期 : format the quarter as year/quarter

javascript - 获取可解析时区

r - 如何一次导入多个.csv文件?

python - 使用 ndimage.binary_fill_holes 填充形状

python - 如何在cython中使用并行性

c# - 在 C# 中创建动态变量名称

python - 将 csv 文件转换为具有特定 json 格式的 json + python