使用通用

时间:2018-09-27 16:12:00

标签: 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)

我的问题是:这是转换所需数据的唯一方法吗?如果没有,还有哪些其他方法?

谢谢

1 个答案:

答案 0 :(得分:2)

避免循环使用pd.DataFrame.append

我对此压力还不够。 pd.DataFrame.append方法很昂贵,因为它不必要地复制数据。将其循环放置会使其成本高出 n 倍。

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

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