Home > Back-end >  Configurate datetime '%d-%m-%Y %H:%M' to '%d/%m/%Y %H:%M' into one-line code
Configurate datetime '%d-%m-%Y %H:%M' to '%d/%m/%Y %H:%M' into one-line code

Time:10-06

I have the following data:

pd_mean['Date_Time'] = pd.to_datetime(pd_mean['Date_Time'])

Data:

 Date_Time   GHI     DNI   DIF  flagR       SE       SA    TEMP        AP      RH     WS      WD    PWAT
0      1994-01-01 00:00:00   0.0    0.00   0.0   0.00 -39.7850 -25.6125  14.300  1004.300  93.600  0.150   97.25  17.925
1      1994-01-01 01:00:00   0.0    0.00   0.0   0.00 -32.2700 -39.9425  14.100  1004.050  94.575  0.375  248.50  18.525
2      1994-01-01 02:00:00   0.0    0.00   0.0   0.00 -22.4050 -50.8275  13.650  1004.200  97.050  0.750  298.50  18.750
3      1994-01-01 03:00:00   0.0    0.00   0.0   0.00 -11.0400 -59.0600  13.725  1004.450  98.875  1.075  271.50  18.900
4      1994-01-01 04:00:00  40.5  118.25  29.5   1.75   1.7800 -65.4425  13.625  1004.900  98.725  0.950  252.00  18.975
...                    ...   ...     ...   ...    ...      ...      ...     ...       ...     ...    ...     ...     ...
244891 2021-12-08 19:00:00   0.0    0.00   0.0   0.00 -38.4000  91.2925  11.350  1009.600  76.050  3.700  182.00  10.900
244892 2021-12-08 20:00:00   0.0    0.00   0.0   0.00 -52.2175  84.9725  11.050  1010.225  77.175  3.475  183.25  10.900
244893 2021-12-08 21:00:00   0.0    0.00   0.0   0.00 -65.8375  74.8725  10.750  1010.300  78.300  3.350  184.75  10.800
244894 2021-12-08 22:00:00   0.0    0.00   0.0   0.00 -78.0150  46.2400  10.350  1010.075  80.450  2.900  183.00  10.600
244895 2021-12-08 23:00:00   0.0    0.00   0.0   0.00 -79.8725 -32.1000   9.900  1009.800  82.725  2.450  185.25  10.200

Later I try to make a csv file for each year. And my code works.

pd_mean['Date_Time'] = pd.to_datetime(pd_mean['Date_Time'])
    
for year_X in range(years.min(), years.max() 1):
        print(f"Creating file (1 hr) for the year: {year_X}") 
        print(pd_mean[years == year_X]
        pd_mean[years == year_X].to_csv(f"data_(1hr)_year_{year_X}.csv")

Data for each year: (Ex: yr 1994)

Creating file (1 hr) for the year: 1994
               Date_Time   GHI     DNI   DIF  flagR       SE       SA    TEMP        AP      RH     WS      WD    PWAT
0    1994-01-01 00:00:00   0.0    0.00   0.0   0.00 -39.7850 -25.6125  14.300  1004.300  93.600  0.150   97.25  17.925
1    1994-01-01 01:00:00   0.0    0.00   0.0   0.00 -32.2700 -39.9425  14.100  1004.050  94.575  0.375  248.50  18.525
2    1994-01-01 02:00:00   0.0    0.00   0.0   0.00 -22.4050 -50.8275  13.650  1004.200  97.050  0.750  298.50  18.750
3    1994-01-01 03:00:00   0.0    0.00   0.0   0.00 -11.0400 -59.0600  13.725  1004.450  98.875  1.075  271.50  18.900
4    1994-01-01 04:00:00  40.5  118.25  29.5   1.75   1.7800 -65.4425  13.625  1004.900  98.725  0.950  252.00  18.975
...                  ...   ...     ...   ...    ...      ...      ...     ...       ...     ...    ...     ...     ...
8755 1994-12-31 19:00:00   0.0    0.00   0.0   0.00 -20.6150  52.2200  19.525  1003.950  74.950  4.900  198.25  11.350
8756 1994-12-31 20:00:00   0.0    0.00   0.0   0.00 -30.7475  41.8250  18.125  1004.525  78.800  4.175  195.25  11.725
8757 1994-12-31 21:00:00   0.0    0.00   0.0   0.00 -38.7000  28.0950  17.175  1005.025  82.150  3.500  195.50  11.950
8758 1994-12-31 22:00:00   0.0    0.00   0.0   0.00 -43.3450  10.8950  17.150  1004.925  84.400  2.775  198.75  12.125

However, I realize I need the %d/%m/%Y %H:%M format. When I try to add the format I get an error.

Code with the new add:

for year_X in range(years.min(), years.max() 1):
    print(f"Creating file (1 hr) for the year: {year_X}")
    print(pd_mean[years == year_X]
    pd_mean[years == year_X]dt.strftime('%d/%m/%Y %H:%M').to_csv(f"data_(1hr)_year_{year_X}.csv") 

Error:

pd_mean[years == year_X].dt.strftime('%d/%m/%Y %H:%M').to_csv(f"data_(1hr)_year_{year_X}.csv")

AttributeError: 'DataFrame' object has no attribute 'dt

'

CodePudding user response:

Try this:

df_subset = pd_mean[years == year_X]
df_subset['Date_Time'] = df_subset['Date_Time'].dt.strftime('%d/%m/%Y %H:%M')
df_subset.to_csv(f"data_(1hr)_year_{year_X}.csv")
  • Related