我在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文件,我想将每个数字数据存储在不同的列中。
答案 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