这个问题是 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)
我的问题是:这是按照我想要的方式转换数据的唯一方法吗?如果不行,还有什么方法?
谢谢
最佳答案
避免循环中的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/