У меня есть датафрейм и в пределах 1 столбца находится вложенный словарь. Я хочу создать функцию, в которой вы передаете каждую строку и имя столбца, а функция json_normalizes столбца в кадре данных. Тем не менее, я продолжаю получать и ошибка »функция принимает 2 позиционных аргумента, 6 были даны« Есть более 6 столбцов в кадре данных и более 6 столбцов в строке [col] (см. Ниже), поэтому я запутался, как 6 аргументов предоставляются
import pandas as pd
from pandas.io.json import json_normalize
def fix_row_(row, col):
if type(row[col]) == list:
df = json_normalize(row[col])
df['id'] = row['id']
else:
df = pd.DataFrame()
return df
new_df = data.apply(lambda x: fix_po_(x, 'Items'), axis=1)
Таким образом, new_df будет фреймом данных. В приведенном ниже примере это будет просто кадр данных с A, B, C в качестве столбцов и 1,2,3 в качестве значений.
Квази-воспроизводимый пример:
my_dict = {'A': 1, 'B': 2, 'C': 3}
ids = pd.Series(['id1','id2','id3'],name='ids')
data= pd.DataFrame(ids)
data['my_column']=''
m = data['ids'].eq('id1')
data.loc[m, 'my_column'] = [my_dict] * m.sum()