我一直在尝试用逗号分隔字符串的其余部分的最后两位,但是没有成功。这是一个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])
答案 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