循环存储在单列中的多个值,例如 [345 1234]

Loop over multiple values stored in single column e.g [345 1234]

我有一个 CSV 文件,其中一列在一个位置存储了两个值,例如 [345 1234],但有时没有值,例如 [] 或只有一个 [456]。 我编写了一个脚本,该脚本适用于空值或单值,但对于双值却失败了。我尝试拆分,将 space 替换为 ,但由于值为空或单个值,它给出了错误。 如何通过循环包含这两个值,该循环既适用于空值也适用于单个值?

df文件格式如下:

20200423.GS022.mseed_597000,[ ],

20200423.GS022.mseed_600000,[ ],

20200423.GS022.mseed_603000,[424 1901],

20200423.GS022.mseed_606000,[2259],

#code for an empty or single value

with open('myfile.txt','w') as f:
for i in range(len(df)):
    itp = df.iloc[i, 1].replace('[', '').replace(']', '')
    if itp != '':
        P=int(float(itp))/100
    else:
        P=0
    

我遇到了这个错误,

ValueError:无法将字符串转换为浮点数:'424 1901'

失败的原因是您正在将 itp 转换为 float,但是 424 1901 是一个包含 space 的字符串,因此无法转换为 float.
如果 4241901 是 2 个不同的值,您可以使用以下代码:

with open('myfile.txt','w') as f:
    for i in range(len(df)):
        itp = df.iloc[i, 1].replace('[', '').replace(']', '')
        for val in itp.split():
            if val != '':
                P=int(float(val))/100
            else:
                P=0
            print (f'P: {P}')

但是,如果两者都是单个值,例如 4241901,您可以使用以下代码:

with open('myfile.txt','w') as f:
    for i in range(len(df)):
        itp = df.iloc[i, 1].replace('[', '').replace(']', '').replace(" ","")
        if itp != '':
            P=int(float(itp))/100
        else:
            P=0