根据条件从字符串中删除空格

问题描述 投票:0回答:1

我正在寻求有关拆分数据的帮助。我的数据有千位分隔符的空间,但时间戳之间也有空格。

这是数据外观的示例(当前为1列):

Date/Time Var1 Var2 Var3 Var4 Var5 Var6
17/04/2020 00:00:00 133 579.20 31 978.90 377 952.81 179 412.41 203 595.20 70 447.40 
17/04/2020 01:00:00 133 583.70 31 980.40 377 963.41 179 412.41 203 595.20 70 448.20

我需要它看起来像这样:

Date/Time           Var1      Var2     Var3      Var4      Var5      Var6
17/04/2020 00:00:00 133579.20 31978.90 377952.81 179412.41 203595.20 70447.40 
17/04/2020 01:00:00 133583.70 31980.40 377963.41 179412.41 203595.20 70448.20

我正在尝试以一种奇怪且过于复杂的方式解决这个问题,我相信。在一个实例中,我删除了所有空格,然后拆分我的日期:

df.iloc[:,3] = df.iloc[:,3].str.replace('/2020', '/2020 ').str.replace(':00:00', ':00:00 ')

然后为了拆分所有数字,我试图做一些事情,例如读取字符串中的每个字符,一旦找到一个点,在前面添加一个空格2个字符串,但是我没有设法使它正常工作。 >

for i in range(len(df)):
    for j in df.iloc[i,:]:
        for k in j:
            if k == '.':
               #to be continued

当然,有一种更快的解决方法。有人可以帮我吗?

我正在寻求有关拆分数据的帮助。我的数据有千位分隔符的间隔,但时间戳之间也有间隔。这是数据外观的一个示例(当前为1 ...

python pandas whitespace strip
1个回答
0
投票
string = """Date/Time Var1 Var2 Var3 Var4 Var5 Var6
17/04/2020 00:00:00 133 579.20 31 978.90 377 952.81 179 412.41 203 595.20 70 447.40 
17/04/2020 01:00:00 133 583.70 31 980.40 377 963.41 179 412.41 203 595.20 70 448.20"""

head = string.split('\n')[0].split(' ')
values = []
import re
value_regex = re.compile(' \d\d\d\.\d*')
timestamp_regex = re.compile('\d\d:\d\d:\d\d')
for line in string.split('\n')[1:]:
    for value in value_regex.findall(line):
        line = line.replace(value, value.replace(' ','')+',')
    for timestamp in timestamp_regex.findall(line):
        line = line.replace(timestamp, timestamp+',')
    value_cur_line =  [sep[1:] if sep.startswith(' ') else sep for sep in line.split(',') if sep.replace(' ','')!='']
    values.append(value_cur_line)
© www.soinside.com 2019 - 2024. All rights reserved.