【问题标题】:Reading in text file with time column which is separated by commas?用逗号分隔的时间列读取文本文件?
【发布时间】:2021-04-20 23:21:45
【问题描述】:

我有一个 txt 文件,其中的数据看起来像这样

A,B,C,Time
xyz,1,MN,14/11/20 17:20:08,296000000
tuv,0,ST,30/12/20 11:11:18,111111111

我使用此代码读取数据:

df = pd.read_csv('path/to/file',delimiter=',')

由于我的时间列它不能正常工作,因为Time 是用逗号分隔的。即使在我有多个具有这种时间格式的列的情况下,我该如何解决这个问题以及如何使它工作?

我想要一个如下所示的数据框:

 A B C Time
 xyz 1 MN 14/11/20 17:20:08,296000000
 tuv 0 ST 30/12/20 11:11:18,111111111

非常感谢!

【问题讨论】:

  • 你想要的输出是什么?
  • 您的输入格式不正确。更好的解决方法是在尝试读入之前消除输入的歧义。您可以更改生成此数据的任何内容以使用不同的分隔符(例如制表符或分号),或者在时间字段周围添加双引号以将其转换为有效的 CSV?
  • @tripleee:你是对的。我必须以另一种方式从我的 SQL 数据库中导出它。我会寻找解决方案。非常感谢您的提示!

标签: python pandas txt


【解决方案1】:

使用reset_index()方法、apply()方法和drop()方法:

df=df.reset_index()
df['Time']=df[['C','Time']].astype(str).apply(','.join,1)
df=df.drop(columns=['C'])
df.columns=['A','B','C','Time']

现在,如果您打印 df,您将获得所需的输出:

    A       B   C   Time
0   xyz     1   MN  14/11/20 17:20:08,296000000
1   tuv     0   ST  30/12/20 11:11:18,111111111

现在如果您想将其转换回 txt 文件,请使用:

df.to_csv('filename.txt',sep='|',index=False)

注意:您不能使用 ','' ' 作为 sep 参数,因为当您尝试加载 txt/csv 文件时会产生同样的问题

【讨论】:

  • 谢谢,它解决了这个特殊问题!但是当我有多个带逗号的时间列时,手动工作也会更多。嗯,我想我必须尝试以另一种方式从我的 SQL 数据库中导出数据。
  • 当您有多个时间列时,请相应地在此方法中进行更改...或者根据您的意愿,您可以尝试以另一种方式从 SQL 数据库中导出数据
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-22
  • 2016-08-19
相关资源
最近更新 更多