从字符串中提取数值数据

时间:2020-02-20 12:19:17

标签: python pandas dataframe

我在csv文件中具有以下格式的文本数据:

76.76%@ 26.2°C D:20.7°C毛/千克:15.5

日期,值,格式值

2019-10-11 14:50:00,71.19,71.19%@ 24.4°C D:17.7°C毛重/ KG:12.8

2019-10-11 15:00:00,72.2,72.2%@ 24.4°C D:17.9°C毛重/ KG:13

2019-10-11 15:10:00,71.35,71.35%@ 24.4°C D:17.8°C毛重/ KG:12.9

我想提取每个数值数据并将其存储在不同的列中。数字并不总是包含小数点。

编辑:数据来自csv文件,我想将每个数字数据存储在不同的列中。

3 个答案:

答案 0 :(得分:0)

您可以在此处使用regex

import re
a='76.76% @ 26.2° C D: 20.7° C G/KG: 15.5 75' #I added 75 just to show it caputres ints and floats.
nums=re.findall(r'\d+\.\d+|\d+',a)
print(nums)
#['76.76', '26.2', '20.7', '15.5', '75']

答案 1 :(得分:0)

在此示例中,我以字符串形式获取数据并使用了NULL。您可以使用split(' ')从csv文件中获取数据。另外我用过正则表达式,您需要将其导入为sep=' '

import re

输出:

data = '76.76% @ 26.2° C D: 20.7° C G/KG: 15.5'
data = data.split(' ')
data = [re.sub("[^0-9.]", "", x) for x in data]
data = [x for x in data if x != '']

temp_dict = {}
for i, item in enumerate(data):
    temp_dict[f'col_{i}'] = item

df = pd.DataFrame([temp_dict])

更新

这可能更有用。

   col_0 col_1 col_2 col_3
0  76.76  26.2  20.7  15.5

更新2

此代码适用于十进制和整数值。

df[['col1', 'col2', 'col3', 'col4']] = df['Formatted Value'].str.extractall('(\d+.\d+)').unstack().loc[:, 0]

答案 2 :(得分:0)

尝试:

x_train, x_test