Я пытался найти / подумать над ответом, возможно, с расплавом или стеком, но все еще не могу этого сделать.
Вот мой DF:
d = {'type' : [1, 2, 3, 4, 5, 1, 2, 3, 4, 5],
'company' : ['A', 'B', 'C', 'D', 'E','A', 'B', 'C', 'D', 'E'],
'value type': ['value car','value car','value car','value car','value car', 'value train','value train','value train','value train','value train',],
'value': [0.1, 0.2, 0.3, 0.4, 0.5, 0.15, 0.25, 0.35, 0.45, 0.55] }
df = pd.DataFrame(d)
Вот что я хочу (у меня есть массив слева, я хочу тот, что справа): Как вы можете видеть, я хочу новый столбец "значение поезда" на основе комбинация (тип, компания)
что-то вроде
for each row :
if (df['value type'] == 'value train'):
#and (type,company) is the same
df['train value'] = df['value']
remove row
Например, компания A из типа 1 будет иметь новое значение в новом столбце для своего значения поезда. Есть ли способ сделать это правильно?
РЕДАКТИРОВАТЬ ::: Был хороший ответ, но я не объяснил себе ясно. Я хочу только новый столбец только с "одним типом значения". Например, мой новый DF:
d = {'type' : [1, 2, 3, 4, 5, 1, 2, 3, 4, 5],
'company' : ['A', 'B', 'C', 'D', 'E','A', 'B', 'C', 'D', 'E'],
'month' : ['jan', 'feb', 'marc', 'apr', 'may', 'jan', 'feb', 'marc', 'apr', 'sep'],
'business' : ['business1', 'business2', 'business3', 'business4', 'business5', 'business6', 'business7', 'business8', 'business9', 'business10'],
'value time': ['past', 'past', 'past', 'past', 'present', 'present', 'present', 'present', 'future', 'future'],
'value': [0.1, 0.2, 0.3, 0.4, 0.11, 0.21, 0.31, 0.41, 0.45, 0.55] }
df = pd.DataFrame(d)
Вот что я хочу на этот раз:
Если возможно, будут только значения с «настоящим» в новом столбце. Что-то вроде
if df['value time'] == 'present' then add to new column