【问题标题】:Python Pandas replacing part of a stringPython Pandas 替换字符串的一部分
【发布时间】:2020-09-08 03:04:40
【问题描述】:

我正在尝试过滤存储在包含时间和角度值的 .csv 文件中的数据,并将过滤后的数据保存在输出 .csv 文件中。我解决了过滤部分,但问题是时间以 hh:mm:ss:msmsmsms (12:55:34:500) 格式记录,我想将其更改为 hhmmss (125534) 或换句话说删除:和毫秒部分。 我尝试使用 .replace 函数,但我不断收到 KeyError: 'time' 错误。

输入数据:

time,angle
12:45:55,56
12:45:56,89
12:45:57,112
12:45:58,189
12:45:59,122
12:46:00,123

代码:

import pandas as pd

#define min and max angle values
alpha_min = 110
alpha_max = 125

#read input .csv file
data = pd.read_csv('test_csv3.csv', index_col=0)

#filter by angle size
data = data[(data['angle'] < alpha_max) & (data['angle'] > alpha_min)]

#replace ":" with "" in time values
data['time'] = data['time'].replace(':','')

#display results
print data

#write results
data.to_csv('test_csv3_output.csv')

【问题讨论】:

    标签: python string pandas replace


    【解决方案1】:

    那是因为time 是一个索引。您可以这样做并删除 index_col=0:

    data = pd.read_csv('test_csv3.csv')
    

    并改变这一行:

    data['time'] = pd.to_datetime(data['time']).dt.strftime('%H%M%S')
    

    输出:

         time  angle
    2  124557    112
    4  124559    122
    5  124600    123
    

    【讨论】:

    • {index_col=0} 用于删除出现在结果中的额外第一列(它也出现在您的答案中)。我尝试了您的代码更正,但仍然出现相同的错误。也许我应该补充一下,我正在使用 python2.7,因为与 openCV 存在一些兼容性问题。
    • 更正:您的代码有效(几乎 - 现在我需要找到一种方法来删除输出中添加的列)。我按照 Daniel B 的回答检查了打印 (data.keys()) 并发现我在输入文件中有一个错误,这是我之前不认识的。我正在使用 Notepad++ 检查 .csv 文件,它没有显示文件的最新版本,这很奇怪。
    • stackoverflow.com/questions/26786960/…找到答案,data.to_csv('test_csv3_output.csv',index=False)
    【解决方案2】:

    print (data.keys())print(data.head()) 会产生什么?似乎您在 time 索引字符串之前\之后有一个杂散字符,有时会发生,具体取决于 csv 的创建方式与读取方式(请参阅this question)。

    如果它不是一个更大的项目和/或您只是想要数据,您可以做一些愚蠢的解决方法,例如:timeKeyString=list(data.columns.values)[0](假设时间是第一个)。

    【讨论】:

    • 我检查了 print (data.keys()) 或 print(data.head()) 以及您链接的答案中的提示,我没有任何杂散字符。 NYC Coder 的代码对我有用,但现在我需要找到一种方法来删除输出文件中添加的 0 列。
    • 没有索引列就不能存在数据框。但是,您可以为导出函数传递一个参数以将其放入输出文件中:print(data.to_csv(sep='\t', index=False))
    猜你喜欢
    • 1970-01-01
    • 2012-12-30
    • 1970-01-01
    • 2018-09-20
    • 2020-12-18
    • 2018-02-03
    • 2015-04-17
    • 1970-01-01
    • 2022-07-18
    相关资源
    最近更新 更多