【问题标题】:Python Dataframe remove unwanted characters stored in a float listPython Dataframe 删除存储在浮点列表中的不需要的字符
【发布时间】:2021-04-21 18:17:40
【问题描述】:

我有一个数据框。它显示来自现场的传感器的数据。奇怪的是,它以字符串格式存储浮点值列表。这意味着,引号在开头和结尾。最后有一个不需要的逗号。我想摆脱它们。

我的代码:

df = 
index                   col_A              col_B       
2018-12-13 09:00:03    '-1.780,-1.747,'   '-1.730,-1.647,' # Each cell of the dataframe has two float values inside it. 
2018-12-13 09:00:19    '-1.714,-1.680,'   '-1.614,-1.531,'
2018-12-13 09:37:03    '-1.797,-1.780,'   '-1.680,-1.581,'
2018-12-13 09:37:19    '-1.780,-1.730,'   '-1.680,-1.597,'
2018-12-13 10:07:17    '-1.497,-1.464,'   '-1.431,-1.398,'

for idx,row in df.iterrows():
    plt.plot(row['col_A'],row['col_B'])
plt.show()

目前的输出:

ValueError: 非法格式字符串'-1.780,-1.747,';两个标记符号

【问题讨论】:

    标签: python list dataframe numpy numpy-ndarray


    【解决方案1】:

    您可以解析字符串以获取浮点值

    def parse_data(s):
        try:
            return (float(s.split(',')[0]), float(s.split(',')[1]))
        except:
            return (0.0,0.0)
            
    (df['col_A_1'], df['col_A_2']) = df['col_A'].apply(parse_data)
    (df['col_B_1'], df['col_B_2']) = df['col_B'].apply(parse_data)
    
    # delete old columns no longer in use
    del df['col_A']
    del df['col_B']
    
    index col_A_1 col_A_2 col_B_1 col_B_2
    2018-12-13 09:00:03, -1.780 -1.780 -1.730 -1.730
    2018-12-13 09:00:03, -1.747 -1.747 -1.647 -1.647

    现在你可以使用 'col_A_1、col_A_2 等

    【讨论】:

    • 感谢您的解决方案。我的浮动列表有 800 到 1000 个元素。所以,我最终得到了这么多列。
    • 你们每个列都有 2 个浮点数,用逗号分隔。因此,您将从每列中有效地获得 2 个浮点数。我不太确定你是如何使用它们的。但是,如果您想将每个浮点数存储在单个列中,那么您最终会得到两倍的列数。
    猜你喜欢
    • 2021-03-13
    • 2022-12-01
    • 2022-01-12
    • 2018-08-08
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    相关资源
    最近更新 更多