#python #pandas
#python #pandas
Вопрос:
У меня есть данные, которые выглядят следующим образом
Однако мне нужно разделить значения заголовка и преобразовать их в три разных столбца, и это должно выглядеть следующим образом.
Каков наилучший метод для достижения этой цели?
import matplotlib.pyplot as plt
import pandas as pd
import math
import os
url = 'https://raw.githubusercontent.com/callmedemi/AMPSE/main/machinepara1_gm_m1.csv'
dataset = pd.read_csv(url, encoding='latin')
print(dataset)
dataset1 = dataset.columns
print(dataset1)
Ответ выглядит так:
wn ... leafValue( OP("/I0/M1" "gm") "Vbias" 2 "lp" 4e-05 "wp" 0.0002 ) (S)
0 0.000005 ... 6.773000e-21
1 0.000008 ... 6.774000e-21
2 0.000010 ... 6.775000e-21
3 0.000013 ... 6.776000e-21
4 0.000015 ... 6.776000e-21
[5 rows x 251 columns]
Index(['wn ',
'leafValue( OP("/I0/M1" "gm") "Vbias" 0 "lp" 1.5e-05 "wp" 0.00012 ) (S)',
'leafValue( OP("/I0/M1" "gm") "Vbias" 0 "lp" 1.5e-05 "wp" 0.00014 ) (S)',
'leafValue( OP("/I0/M1" "gm") "Vbias" 0 "lp" 1.5e-05 "wp" 0.00016 ) (S)',
'leafValue( OP("/I0/M1" "gm") "Vbias" 0 "lp" 1.5e-05 "wp" 0.00018 ) (S)',
'leafValue( OP("/I0/M1" "gm") "Vbias" 0 "lp" 1.5e-05 "wp" 0.0002 ) (S)',
'leafValue( OP("/I0/M1" "gm") "Vbias" 0 "lp" 2.125e-05 "wp" 0.00012 ) (S)',
'leafValue( OP("/I0/M1" "gm") "Vbias" 0 "lp" 2.125e-05 "wp" 0.00014 ) (S)',
'leafValue( OP("/I0/M1" "gm") "Vbias" 0 "lp" 2.125e-05 "wp" 0.00016 ) (S)',
'leafValue( OP("/I0/M1" "gm") "Vbias" 0 "lp" 2.125e-05 "wp" 0.00018 ) (S)',
...
'leafValue( OP("/I0/M1" "gm") "Vbias" 2 "lp" 3.375e-05 "wp" 0.00012 ) (S)',
'leafValue( OP("/I0/M1" "gm") "Vbias" 2 "lp" 3.375e-05 "wp" 0.00014 ) (S)',
'leafValue( OP("/I0/M1" "gm") "Vbias" 2 "lp" 3.375e-05 "wp" 0.00016 ) (S)',
'leafValue( OP("/I0/M1" "gm") "Vbias" 2 "lp" 3.375e-05 "wp" 0.00018 ) (S)',
'leafValue( OP("/I0/M1" "gm") "Vbias" 2 "lp" 3.375e-05 "wp" 0.0002 ) (S)',
'leafValue( OP("/I0/M1" "gm") "Vbias" 2 "lp" 4e-05 "wp" 0.00012 ) (S)',
'leafValue( OP("/I0/M1" "gm") "Vbias" 2 "lp" 4e-05 "wp" 0.00014 ) (S)',
'leafValue( OP("/I0/M1" "gm") "Vbias" 2 "lp" 4e-05 "wp" 0.00016 ) (S)',
'leafValue( OP("/I0/M1" "gm") "Vbias" 2 "lp" 4e-05 "wp" 0.00018 ) (S)',
'leafValue( OP("/I0/M1" "gm") "Vbias" 2 "lp" 4e-05 "wp" 0.0002 ) (S)'],
dtype='object', length=251)
Если вы видите для каждого «lp», «wp» дает пять разных значений, и для каждого «Vbias» (диапазон: 0-2) есть пять разных значений lp. Заголовок здесь является основной проблемой, поскольку я не могу извлечь заголовок.
Что я хочу сделать, так это извлечь «Vbias», «lp» и «wp» из заголовка для каждого из значений «gm» и поместить их в соответствующие столбцы. Файлы изображений предназначены только для лучшего понимания, настоящий файл CSV находится в коде.
Ответ №1:
При попытке прочитать файл CSV с предоставленного URL-адреса я получил ошибку кодирования, поэтому сначала мне понадобился аргумент, чтобы указать допустимую кодировку, которая будет использоваться.
Затем, поскольку заголовки столбцов кажутся непригодными для использования, и мы знаем точные имена, которые мы хотим туда поместить, мы можем просто заменить имена столбцов фрейма данных нашим собственным списком:
import pandas as pd
url = 'https://raw.githubusercontent.com/callmedemi/AMPSE/main/trial.csv'
dataset = pd.read_csv(url, encoding='latin')
# remove imported column headers
df = dataset[1:]
# and define new ones, based on our knowledge of the data
df.columns = ['wm', 'gm', 'Vbias', 'lp', 'wp' ]
print(df)
Результат:
wm gm Vbias lp wp
1 0.000007 4.250000e-08 4.350000e-08 4.440000e-08 4.540000e-08
2 0.000010 5.480000e-08 5.580000e-08 5.670000e-08 5.770000e-08
3 0.000013 6.710000e-08 6.810000e-08 6.900000e-08 7.000000e-08
4 0.000015 7.940000e-08 8.040000e-08 8.130000e-08 8.230000e-08
Комментарии:
1. Я думаю, что я не смог дать четкую картину проблемы. Заголовок здесь не является тарабарщиной. Мне нужны значения из Vbias, lp и wp из заголовка, который изменяется. Таким образом, wp изменяется пять раз для каждого lp, а lp изменяется пять раз для каждого vbias, и их соответствующие значения записываются в выходные данные. Если вы сравните Vbias, lp и wp, вы увидите, что это значения, указанные в заголовке, а не значения gm.
2. Я вижу. Каков ожидаемый шаблон в заголовке? Какие части меняются в этом тексте?
3. Итак, для Vbias = 0, lp = 1.5e-05 wp изменяется с 0.00012 на 0.00020 как (0.00012,0.00014,0.00016,0.00018,0.00020). И для каждого изменения lp Vbias также изменяется с 0 на 2.