Python 3.x 熊猫-创建动态列
我每行都有一本字典。我的目标是把它平铺成一排Python 3.x 熊猫-创建动态列,python-3.x,pandas,dataframe,flatten,normalize,Python 3.x,Pandas,Dataframe,Flatten,Normalize,我每行都有一本字典。我的目标是把它平铺成一排 0 [{'key': 'ga_session_id', 'value': {'string_va... 1 [{'key': 'source', 'value': {'string_value': '... 2 [{'key': 'firebase_event_origin', 'value': {'s... 3 [{'key': 'firebase_conversion', 'value': {'str... Name:
0 [{'key': 'ga_session_id', 'value': {'string_va...
1 [{'key': 'source', 'value': {'string_value': '...
2 [{'key': 'firebase_event_origin', 'value': {'s...
3 [{'key': 'firebase_conversion', 'value': {'str...
Name: params, dtype: object
以下是一行的示例:
[{'key': 'ga_session_id',
'value': {'string_value': None,
'int_value': '1575017974',
'float_value': None,
'double_value': None}},
{'key': 'firebase_conversion',
'value': {'string_value': None,
'int_value': '1',
'float_value': None,
'double_value': None}},
{'key': 'firebase_event_origin',
'value': {'string_value': 'auto',
'int_value': None,
'float_value': None,
'double_value': None}},
{'key': 'ga_session_number',
'value': {'string_value': None,
'int_value': '2',
'float_value': None,
'double_value': None}},
{'key': 'engaged_session_event',
'value': {'string_value': None,
'int_value': '1',
'float_value': None,
'double_value': None}}]
我希望迭代行中的每个元素,并动态创建动态列。例如:
[{'key': 'ga_session_id',
'value': {'string_value': None,
'int_value': '1575017974',
'float_value': None,
'double_value': None}}, ...]
到
这同样适用于行中的其他元素。我知道我们可以使用apply动态填充新列。这就是我尝试过的
import itertools as it
df4 = pd.DataFrame.from_records(it.chain.from_iterable(
i for i in df2['params']))
这是输出:
但是,我丢失了数据所属行的轨迹。我需要一些帮助我创建了数据帧的副本,然后逐行迭代,动态创建列,并在新(副本)数据帧中添加数据
tmp_df = deepcopy(df)
col_list = []
for index,row in df.iterrows():
for element in row[column]:
cols = ["%s.%s"%(element['key'],key) for key in element['value'].keys()]
tmp_df = tmp_df.reindex(columns=list(dict.fromkeys(tmp_df.columns.tolist() + cols).keys()))
tmp_df.loc[index,cols] = element['value'].values()
我创建了数据帧的副本,然后逐行迭代,动态创建列,并在新(复制)数据帧中添加数据
tmp_df = deepcopy(df)
col_list = []
for index,row in df.iterrows():
for element in row[column]:
cols = ["%s.%s"%(element['key'],key) for key in element['value'].keys()]
tmp_df = tmp_df.reindex(columns=list(dict.fromkeys(tmp_df.columns.tolist() + cols).keys()))
tmp_df.loc[index,cols] = element['value'].values()
所有元素是否具有相同的结构?(
键
,深度
等)是的,它们具有相同的结构列表中有多少记录?为什么您不想使用迭代创建元组的dict
?列表中的记录数是可变的,我的目标是将所有这些记录展平以便所有元素都具有相同的结构?(键
,深度
等)是的,它们具有相同的结构列表
中有多少记录?为什么不想使用迭代创建元组的dict
?列表中的记录数是可变的,我的目标是将所有这些记录展平
tmp_df = deepcopy(df)
col_list = []
for index,row in df.iterrows():
for element in row[column]:
cols = ["%s.%s"%(element['key'],key) for key in element['value'].keys()]
tmp_df = tmp_df.reindex(columns=list(dict.fromkeys(tmp_df.columns.tolist() + cols).keys()))
tmp_df.loc[index,cols] = element['value'].values()