У меня есть dataframe_old, который я хочу преобразовать в dataframe_new, чтобы я мог использовать его позже. Dataframe_old. Мне удалось создать структуру dataframe_new, так что мне нужно было только заполнить все ячейки путем поиска dataframe_old для каждой пары строк / столбцов. Столбец 1 имеет ключ для каждого поля id и значения, но я всегда за пределами. Мне нужно сделать что-то вроде «итерации» до столбца 1, но мои попытки не дали хороших результатов.
Это 2 кадра данных, с которыми я работаю
import pandas as pd
import numpy as np
data_old = {'seq': [100,100,100,100,1002,1002,1002,1003],
'fieldID':['name','income','married','age','name','dollar','date','age'],
'fieldValue':['George',100,'yes',38,'Martiness','5000','01/01/2000','45']
}
data_new = {'seq': [100,1002,1003],
'name': ['','',''],
'income': ['','',''],
'married': ['','',''],
'age': ['','',''],
'dollar': ['','',''],
'date': ['','','']
}
df_old = pd.DataFrame(data_old)
df_new = pd.DataFrame(data_new, index = data_new['seq'])
Я создал функцию, которая поможет мне найти значения
def find_value(sequence, field_identifier):
'''
search for values of fields from the original
export by using the sequence number and field id
'''
try:
df_func = df_all.loc[(df_all['seq'] == sequence) & (df_all["fieldID"] == field_identifier)]
field_value = df_func.at[0, "fieldValue"]
except:
field_value = ""
return field_value
Теперь я пытаюсь объединить все но это заканчивается без границ
for row in df_new.iterrows():
cnt_col = 0
first = True
for column in df_new:
if first:
first = False
continue
else:
fieldID = df.columns[cnt_col]
seq = index
df_new.loc[app, fieldID] = find_value(app, fieldID)
cnt_col += 1
Это то, что мой ожидаемый результат будет
data_expected = {'seq': [100,1002,1003],
'name': ['George','Martiness',''],
'income': [100,'5000',''],
'married': ['yes','',''],
'age': [38,'','45'],
'dollar': ['','',''],
'date': ['','01/01/2000','']
}
df_expected = pd.DataFrame(data_expected)
Я пытался искать в Интернете, но я застрял на этой части и просто не могу заставить его работать.