当前位置: 首页 > 面试题库 >

如何从Pandas数据框中的时间戳列中删除时区

翟聪
2023-03-14
问题内容

我读了外汇DataFrame的Pandas更改时区,但我想让我的数据框时区的time列幼稚,以便与sqlite3数据库实现互操作性。

我的pandas数据框中的数据已经转换为UTC数据,但是我不想在数据库中维护此UTC时区信息。

给定其他来源的数据样本,它看起来像这样:

print(type(testdata))
print(testdata)
print(testdata.applymap(type))

给出:

<class 'pandas.core.frame.DataFrame'>
                        time  navd88_ft  station_id  new
0  2018-03-07 01:31:02+00:00  -0.030332          13    5
1  2018-03-07 01:21:02+00:00  -0.121653          13    5
2  2018-03-07 01:26:02+00:00  -0.072945          13    5
3  2018-03-07 01:16:02+00:00  -0.139917          13    5
4  2018-03-07 01:11:02+00:00  -0.152085          13    5
                                     time        navd88_ft     station_id  \
0  <class 'pandas._libs.tslib.Timestamp'>  <class 'float'>  <class 'int'>   
1  <class 'pandas._libs.tslib.Timestamp'>  <class 'float'>  <class 'int'>   
2  <class 'pandas._libs.tslib.Timestamp'>  <class 'float'>  <class 'int'>   
3  <class 'pandas._libs.tslib.Timestamp'>  <class 'float'>  <class 'int'>   
4  <class 'pandas._libs.tslib.Timestamp'>  <class 'float'>  <class 'int'>

             new  
0  <class 'int'>  
1  <class 'int'>  
2  <class 'int'>  
3  <class 'int'>  
4  <class 'int'>

newstamp = testdata['time'].tz_convert(None)

给出最终错误:

TypeError: index is not a valid DatetimeIndex or PeriodIndex

如何用时区天真的时间戳替换列?


问题答案:

该列必须是datetimedtype,例如from的使用pd.to_datetime,然后您可以使用tz_localize来更改时区,一个简单的时间戳对应于时区None

testdata['time'].dt.tz_localize(None)

除非列是索引(DatetimeIndex),则.dt存取器必须用于访问大熊猫日期时间的功能。



 类似资料:
  • 问题内容: 场景: 我有一个从Excel工作表中检索到具有多个列的数据框。其中一些列是日期:一些仅包含日期(yyyy:mm:dd),一些具有日期和时间戳(yyyy:mm:dd 00.00.000000)。 问题: 当日期不是数据框的索引时,如何从日期中删除时间戳? 我已经尝试了什么: 在SO的其他文章中使用pandas中的日期- 在datetime中删除看不见的字符并转换为字符串以及如何剥离pan

  • 问题内容: 我有数据框: df 如何删除列名,并从该数据帧?一种方法是将其写入csv文件,然后在指定header = None的情况下读取它。有没有一种方法,而无需写到csv并重新读取? 问题答案: 我认为你不能删除列名,只能通过重新设置有: 这与使用和相同: 下一个解决方案:

  • 问题内容: 我有一个来自AG列的数据文件,如下所示,但是当我用它读取数据时,它毫无理由地在末尾打印了一个额外的列。 我已经多次查看过我的数据文件,但是其他任何列中都没有多余的数据。我在阅读时应如何删除此多余的列?谢谢 问题答案: df = df.loc[:, ~df.columns.str.contains(‘^Unnamed’)] 如果CSV文件的第一列具有索引值,则可以执行以下操作:

  • 我使用的是一个优先级队列(),其中需要以先进先出的方式处理具有相同优先级的项。 我通过将一个时间戳成员添加到要添加到队列中的项目中来处理这个问题,每个添加的项目都会增加这个时间戳成员。(请参见PriorityQueue具有相同优先级的对象和http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/PriorityBlockingQu

  • 数据库中的DATE字段具有以下格式: 我想从日期中删除时间并返回如下日期:

  • 问题内容: 我有2个数据框,一个命名为USERS,另一个命名为EXCLUDE。他们两个都有一个名为“电子邮件”的字段。 基本上,我要删除EXERSUDE中包含电子邮件的USERS中的每一行。 我该怎么做? 问题答案: 您可以将和条件一起使用,通过以下方式反转布尔值: 另一个解决方案: