使用公共键作为元素的字典将Dataframe列转换为单独的数据帧

2024-10-02 10:21:27 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题是我不久前在这里发布的a question的扩展。我试图理解@patrickjlong1提供的公认答案(再次感谢),因此我正在一步一步地运行代码并检查结果。你知道吗

我发现这部分很难理解。你知道吗

>>> df_initial
data                                                    seriesID
0   {'year': '2017', 'period': 'M12', 'periodName'...   SMS42000000000000001
1   {'year': '2017', 'period': 'M11', 'periodName'...   SMS42000000000000001
2   {'year': '2017', 'period': 'M10', 'periodName'...   SMS42000000000000001
3   {'year': '2017', 'period': 'M09', 'periodName'...   SMS42000000000000001
4   {'year': '2017', 'period': 'M08', 'periodName'...   SMS42000000000000001
5   {'year': '2017', 'period': 'M07', 'periodName'...   SMS42000000000000001

第一列的每一行中的元素是一个字典,它们都有公共键:“year”、“period”等。我想将其转换为:

    footnotes   period  periodName  value   year
0   {}           M12    December    6418025 2017
0   {}           M11    November    6418195 2017
0   {}           M10    October     6418284 2017
...

@patrickjlong1提供的解决方案是一次转换一行,然后将它们全部追加,我的理解是一个字典可以转换成一个数据帧:

    for i in range(0, len(df_initial)):
        df_row = pd.DataFrame(df_initial['data'][i])
        df_row['seriesID'] = series_col
        df = df.append(df_row, ignore_index=True)

我的问题是:这是我想要的唯一转换数据的方法吗?如果没有,还有什么方法?你知道吗

谢谢


Tags: 数据dfdata字典yearinitialperiodrow
1条回答
网友
1楼 · 发布于 2024-10-02 10:21:27

避免循环中的pd.DataFrame.append

我怎么强调都不过分。^{}方法很昂贵,因为它不必要地复制数据。把它放在一个循环中,会使它的成本提高一倍。你知道吗

相反,您可以将字典列表提供给pd.DataFrame构造函数:

df = pd.DataFrame(df_initial['seriesID'].tolist())

相关问题 更多 >

    热门问题