【问题标题】:python csv filter pairs and nonpairspython csv过滤器对和非对
【发布时间】:2021-07-22 12:50:09
【问题描述】:

我的文本文件如下:

C1,D1,,,,,,,,
Layer_00 , 3.46ms,Layer_01 , 3.40ms,Layer_02 , 3.56ms,Layer_03 , 3.49ms,Layer_04 , 3.44ms
Layer_05 , 3.45ms,Layer_06 , 3.44ms,Layer_07 , 3.46ms,Layer_08 , 3.45ms,Layer_09 , 3.48ms
C2,D2,,,,,,,,
Layer_00 , 3.42ms,Layer_01 , 3.39ms,Layer_02 , 3.51ms,Layer_03 , 3.41ms,Layer_04 , 3.43ms
Layer_05 , 3.40ms,Layer_06 , 3.43ms,Layer_07 , 3.45ms,Layer_08 , 3.43ms,Layer_09 , 3.42ms

我尝试了以下方法:

with open('text.txt', 'r') as file:
    pairs = re.findall('(Layer_\d+)\s,\s(\d+\.\d+)ms', file.read())
pairs = [(k, float(v)) for k,v in pairs]
df = pd.DataFrame(pairs)

得到了这个:

获取配对
但是我想包含 C1,D1,C2,D2,结果应该是这样的:

有人知道如何解决吗?

【问题讨论】:

标签: python pandas csv


【解决方案1】:

这应该可以,但是如果它还包含字符串(“C1”,“C2”),则不能将值声明为浮点数:

with open('text.txt', 'r') as file:
    pairs = re.findall('(Layer_\d+|C\d)\s*,\s*(\d+\.\d+|D\d)[ms]*', file.read())
pairs = [(k, v) for k,v in pairs]
df = pd.DataFrame(pairs)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 2020-06-27
    • 1970-01-01
    • 2018-12-14
    • 2018-08-05
    • 1970-01-01
    相关资源
    最近更新 更多