python - 使用公共(public)键将带有公共(public)键作为元素的字典的 Pandas Dataframe 列转换为单独的数据框

标签 python pandas dictionary dataframe series

这个问题是 a question 的延伸我不久前在这里发过帖子。我试图理解 @patrickjlong​​1 提供的已接受答案(再次感谢),因此我正在逐步运行代码并检查结果。

我发现这部分很难理解。

>>> 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
...

@patrickjlong​​1 提供的解决方案是一次转换一行,然后将它们全部附加,我理解这是一个字典可以转换为一个数据帧:

    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)

我的问题是:这是按照我想要的方式转换数据的唯一方法吗?如果不行,还有什么方法?

谢谢

最佳答案

避免循环中的pd.DataFrame.append

这一点我怎么强调都不为过。 pd.DataFrame.append该方法的成本很高,因为它复制了不必要的数据。将其放入循环中会使其成本增加n倍。

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

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

关于python - 使用公共(public)键将带有公共(public)键作为元素的字典的 Pandas Dataframe 列转换为单独的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52541146/

相关文章:

python - 如何更改由 plt.hist() 描绘的直方图的尺寸,因为 figsize 不是参数

python - 得到一个似乎没有多大意义的错误。

Python:按键的一部分对字典中的项目进行排序?

python - 重置 Python/Matplotlib 中绘图的默认字体/颜色

python - Django : Change default value for an extended model class

python - 使用掩码计算DataFrame中的平均值

python - Pandas 分钟数据列到 60 分钟列

python - 如何在 python 中将完整输出写入文件而不附加

javascript - send_keys() 的替代方案 - selenium python

向后打印字典结果