使用pandas将datetime列格式化为数据框的单一格式



我遇到了一个问题,我的月数据框架的日期时间列包含多个格式,比如让我们说,例如:对于一个月'January','13th March 2020'的开始'2020-03-13'的格式和一些行的日期时间格式为'12th March 2020''2020-12-03',类似于'1st December 2021',这是一个很大的错误,因为我将代表一个完整的月数据一年。

date  S1counts  S1SM  ...  S10Perm  S10Temp  S10Volt
0    2020-03-13 00:08:08   14055.0  5.61  ...    12.10   22.164    12.09
1    2020-03-13 00:18:08   14055.0  5.61  ...    12.10   22.133    12.11
2    2020-03-13 00:28:08   14057.0  5.61  ...    12.10   22.102    12.11
3    2020-03-13 00:38:08   14057.0  5.61  ...    12.09   22.063    12.11
4    2020-03-13 00:48:08   14060.0  5.60  ...    12.09   22.031    12.11
...       ...   ...  ...      ...      ...      ...
2170 2020-12-03 23:18:08   14051.0  5.62  ...    12.11   22.313    12.11
2171 2020-12-03 23:28:08   14056.0  5.61  ...    12.11   22.266    12.11
2172 2020-12-03 23:38:08   14056.0  5.61  ...    12.10   22.250    12.11
2173 2020-12-03 23:48:08   14051.0  5.62  ...    12.10   22.242    12.09
2174 2020-12-03 23:58:08   14055.0  5.61  ...    12.10   22.188    12.09
[2175 rows x 51 columns]

我已经尝试了pandas.to_datetime()的格式,但格式没有改变,显示结果如上。

如何克服这个问题?

方法

  • 尝试先转换成美国格式
  • 如果使用国际格式填充NaT
df = pd.read_csv(io.StringIO("""                   date  S1counts  S1SM  ...  S10Perm  S10Temp  S10Volt
0    2020-03-13 00:08:08   14055.0  5.61  ...    12.10   22.164    12.09
1    2020-03-13 00:18:08   14055.0  5.61  ...    12.10   22.133    12.11
2    2020-03-13 00:28:08   14057.0  5.61  ...    12.10   22.102    12.11
3    2020-03-13 00:38:08   14057.0  5.61  ...    12.09   22.063    12.11
4    2020-03-13 00:48:08   14060.0  5.60  ...    12.09   22.031    12.11
2170  2020-12-03 23:18:08   14051.0  5.62  ...    12.11   22.313    12.11
2171  2020-12-03 23:28:08   14056.0  5.61  ...    12.11   22.266    12.11
2172  2020-12-03 23:38:08   14056.0  5.61  ...    12.10   22.250    12.11
2173  2020-12-03 23:48:08   14051.0  5.62  ...    12.10   22.242    12.09
2174  2020-12-03 23:58:08   14055.0  5.61  ...    12.10   22.188    12.09
"""), sep="ss+", engine="python")
df.date = pd.to_datetime(df.date, format="%Y-%d-%m %H:%M:%S", errors="coerce").fillna(pd.to_datetime(df.date))
S10Volt140555.61"text-align:左;"……12.122.16412.09140555.61"text-align:左;"……12.122.13312.11140575.61"text-align:左;"……12.122.10212.11140575.61"text-align:左;"……12.0922.06312.11140605.6"text-align:左;"……12.0922.03112.11140515.62"text-align:左;"……12.1122.31312.11140565.61"text-align:左;"……12.1122.26612.11140565.61"text-align:左;"……12.122.2512.11140515.62"text-align:左;"……12.122.24212.092020-03-12 23:58:0812.122.18812.09

相关内容

最新更新