如何将熊猫数据框中的列转换为数据时间?

丽莎·苏丽娜

我有一个 csv 文档,下面是一个例子:

oci,citing,cited,creation,timespan,journal_sc,author_sc
0200100000236252421370109080537010700020300040001-020010000073609070863016304060103630305070563074902,"10.1002/pol.1985.170230401","10.1007/978-1-4613-3575-7_2",1985-04,P2Y,no,no

有 2 列,代表日期,我想将列类型从字符串更改为datetime格式。

creation(字符串)是创建日期,除了未指定之外,还可以用三种形式表示:

  1. “yyyy-mm-dd”(例如“2019-09-20”)
  2. “yyyy-mm”(例如“2019-09”)
  3. “yyyy”(例如“2019”)

timespan(字符串):根据形式表示PnYnMnD,其中P是开始表达式nY的字面值YnM是年数后跟一个字面量MnD月数后跟一个字面量是天数后跟一个文字D,其中任何这些数字和相应的指示符如果等于 0 则可能不存在P在 之前可能会出现一个减号以表示负持续时间。

我正在尝试datetime使用pd.to_datetime()函数将列类型从字符串更改为格式

def do_process(f_path):
    global my_ocan

    my_ocan = pd.read_csv(f_path, names=['oci', 'citing', 'cited', 'creation', 'timespan', 'journal_sc', 'author_sc'], parse_dates = ['creation', 'timespan'])
    my_ocan['timespan'] = pd.to_datetime(my_ocan['timespan'], format='%Y%m%d', errors='ignore', yearfirst=True)
    my_ocan['creation'] = pd.to_datetime(my_ocan['creation'], format='%Y%m%d', errors='ignore', yearfirst=True)
    #print(my_ocan['citing'])
    print(my_ocan.info())

    return my_ocan

执行时,print(my_ocan.info())我得到 '214 non-null object' 而不是datetime. 我错过了什么?有什么问题?

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 214 entries, 0 to 213
Data columns (total 7 columns):
oci           214 non-null object
citing        214 non-null object
cited         214 non-null object
creation      214 non-null object
timespan      214 non-null object
journal_sc    214 non-null object
author_sc     214 non-null object
dtypes: object(7)

谢谢你们,祝你们度过愉快的一天:)

克里斯

您的代码中有几个问题需要解决。

首先,请注意,在您的.csv文件中,第一列是:

oci,citing,cited,creation,timespan,journal_sc,author_sc

因此,当您使用pd.read_csv数据框的第一行构建数据库时,将是.csv文件的第一行你最终的数据框是:

                                                 oci  ...  author_sc
0                                                oci  ...  author_sc
1  0200100000236252421370109080537010700020300040...  ...         no

代替 :

[2 rows x 7 columns]
                                                 oci  ... author_sc
1  0200100000236252421370109080537010700020300040...  ...        no

我不认为你想要那个。

您还可以抑制pd.to_datetime不好的错误删除 后errors='ignore',您会注意到转换为datetime失败,因为输入与'%Y%m%d'格式不匹配

当然不是,因为您的creation专栏是:

0    creation
1     1985-04

第一行是"creation"不匹配的'%Y%m%d'

其次,日期格式应该是'%Y-%m-%d',因为日期是 YYYY-MM-DD 格式而不是 YYYYMMDD。(小心,因为例如,当您的格式中有天而输入没有时,日期会添加一天)。

第三,这些timespan值不是日期,它们是句号(如果我没记错的话是 Java 句号),所以pd.to_datetime对它们使用是行不通的。我还没有找到可以为您进行转换的 Python 函数,因此您可能必须以一种很好的旧字符串解析方式自己完成这项工作,或者深入挖掘 Python 库。

第四,正如文档所说,pd.to_datetime已被弃用,因此您最好远离并使用例如datetime.strptime它做的非常相似的工作。

最后,这是您的代码的工作版本:

 def do_process(f_path):
     global my_ocan

     my_ocan = pd.read_csv(f_path, names=['oci', 'citing', 'cited', 'creation', 'timespan', 'journal_sc', 'author_sc'], parse_dates = ['creation', 'timespan'])
     my_ocan = my_ocan.iloc[1:]  # to remove the first row
     my_ocan['creation'] = pd.to_datetime(my_ocan['creation'], format="%Y-%m-%d", yearfirst=True)
     # Period parsing on my_ocan['timespan']
     print(my_ocan.info())

     return my_ocan

哪些输出:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1 entries, 1 to 1
Data columns (total 7 columns):
oci           1 non-null object
citing        1 non-null object
cited         1 non-null object
creation      1 non-null datetime64[ns]
timespan      1 non-null object
journal_sc    1 non-null object
author_sc     1 non-null object
dtypes: datetime64[ns](1), object(6)

通知creationdatetime64[ns]现在的类型

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将数据框的日期和时间列转换为熊猫的日期时间格式?

来自分类Python

如何将熊猫数据框的索引转换为列?

来自分类Dev

如何将熊猫数据框的值转换为列

来自分类Dev

如何将包含列表的列转换为熊猫数据框中的单独列?

来自分类Dev

如何将数据框列中的天数转换为熊猫中的整数?

来自分类Dev

如何将数据框列转换为熊猫中的行

来自分类Dev

如何将数据框中的多个“字符串”列转换为日期时间列?

来自分类Dev

如何将生成的数据转换为熊猫数据框

来自分类Dev

如何将python中的数据框列对象转换为日期时间格式

来自分类Dev

如何将熊猫数据框转换为单个列表

来自分类Dev

如何将熊猫数据框行转换为多行

来自分类Dev

如何将Frozendict对象转换为熊猫数据框

来自分类Dev

如何将熊猫数据框转换为命名元组

来自分类Linux

如何将熊猫数据框转换为分层字典

来自分类Dev

如何将python字典转换为熊猫数据框

来自分类Dev

如何将火炬张量转换为熊猫数据框?

来自分类Dev

如何将列表转换为熊猫数据框

来自分类Dev

如何将文本表转换为熊猫数据框?

来自分类Dev

如何将矩阵转换为熊猫数据框

来自分类Dev

如何将熊猫数据框转换为datadict

来自分类Dev

如何将熊猫数据框转换为嵌套json

来自分类Dev

如何将嵌套的字典转换为熊猫数据框?

来自分类Python

如何将熊猫数据框中的日期转换为“日期”数据类型?

来自分类Python

如何将熊猫数据框中的日期转换为“日期”数据类型?

来自分类Dev

如何将熊猫数据框的列行中的元组转换为重复的行和列?

来自分类Dev

如何将熊猫数据框的某些列转换为分类列?

来自分类Dev

如何将数据框列转换为日期时间格式以绘制时间序列

来自分类Dev

如何将数据框转换为日期时间格式

来自分类Dev

如何将基于列的大型数据框转换为R中的数据框列表

Related 相关文章

  1. 1

    如何将数据框的日期和时间列转换为熊猫的日期时间格式?

  2. 2

    如何将熊猫数据框的索引转换为列?

  3. 3

    如何将熊猫数据框的值转换为列

  4. 4

    如何将包含列表的列转换为熊猫数据框中的单独列?

  5. 5

    如何将数据框列中的天数转换为熊猫中的整数?

  6. 6

    如何将数据框列转换为熊猫中的行

  7. 7

    如何将数据框中的多个“字符串”列转换为日期时间列?

  8. 8

    如何将生成的数据转换为熊猫数据框

  9. 9

    如何将python中的数据框列对象转换为日期时间格式

  10. 10

    如何将熊猫数据框转换为单个列表

  11. 11

    如何将熊猫数据框行转换为多行

  12. 12

    如何将Frozendict对象转换为熊猫数据框

  13. 13

    如何将熊猫数据框转换为命名元组

  14. 14

    如何将熊猫数据框转换为分层字典

  15. 15

    如何将python字典转换为熊猫数据框

  16. 16

    如何将火炬张量转换为熊猫数据框?

  17. 17

    如何将列表转换为熊猫数据框

  18. 18

    如何将文本表转换为熊猫数据框?

  19. 19

    如何将矩阵转换为熊猫数据框

  20. 20

    如何将熊猫数据框转换为datadict

  21. 21

    如何将熊猫数据框转换为嵌套json

  22. 22

    如何将嵌套的字典转换为熊猫数据框?

  23. 23

    如何将熊猫数据框中的日期转换为“日期”数据类型?

  24. 24

    如何将熊猫数据框中的日期转换为“日期”数据类型?

  25. 25

    如何将熊猫数据框的列行中的元组转换为重复的行和列?

  26. 26

    如何将熊猫数据框的某些列转换为分类列?

  27. 27

    如何将数据框列转换为日期时间格式以绘制时间序列

  28. 28

    如何将数据框转换为日期时间格式

  29. 29

    如何将基于列的大型数据框转换为R中的数据框列表

热门标签

归档