分割字符串的最后两位

时间:2020-10-19 03:43:55

标签: python pandas

我一直在尝试用逗号分隔字符串的其余部分的最后两位,但是没有成功。这是一个csv文件。以00结尾的数字行没有逗号,而以10的倍数表示的行仅显示一位数字。我想我可以解决这个问题,目前我需要在对象其余部分句号停止后进行数字分割的帮助。

Values

2020-01-01,"00:00:00",1467.21

2020-01-01,"00:00:02",1467.28

2020-01-01,"00:00:04",1466

2020-01-01,"00:00:06",1467.06

2020-01-01,"00:00:08",1466.83  

2020-10-18,"19:55:04",3311.89

2020-10-18,"19:55:06",3313.03

2020-10-18,"19:55:08",3312.22

2020-10-18,"19:55:10",3312.29

2020-10-18,"19:55:12",3311.8

我需要他们成为

Values 

21
28
00
06
83
89
03
22
29
08

我使用了以下代码:

import pandas as pd 
df= pd.read_csv('MESHS')

# dropping null value columns to avoid errors 
df.dropna(inplace = True) 
  
# new data frame with split value columns 
new = Values.str.split('. ', n = 1, expand = True) 

# making separate last name column from new data frame  
print(new[1])

3 个答案:

答案 0 :(得分:1)

尝试一下:

df['Values'] = df['Values'].str.split('.').str[-1]

答案 1 :(得分:1)

import pandas as pd

df= pd.read_csv('MESHS')

# dropping null value columns to avoid errors 
df.dropna(inplace = True) 
  
# data frame with split value columns and fill NaN values
df[['Values','New_Value']] = df.Values.str.split('.', n=1, expand=True).fillna(0)

# If you no longer need the original column, you can delete it
#df.drop('Values', axis =1, inplace = True)

print(df)

结果:

                       Values New_Value
0  2020-01-01,"00:00:00",1467        21
1  2020-01-01,"00:00:02",1467        28
2  2020-01-01,"00:00:04",1466        0
3  2020-01-01,"00:00:06",1467        06

答案 2 :(得分:1)

以下代码将为您提供帮助

首先,需要将字符串值拆分为数字

所以我们可以获得正确的十进制值

然后根据句点运算符进行拆分。

df['numbers'] = pd.to_numeric(df["values"].str.split(",", n = 2, expand = True)[2])
df['values'] = df['numbers'].astype(str).str.split('.', n=1, expand = True)[1]

输出:

21
28
 0
06
83
89
03
22
29
08