如何将字典元组转换为有组织的数据框?

Posted

技术标签:

【中文标题】如何将字典元组转换为有组织的数据框?【英文标题】:How can I convert tuple of dictionaries into an organized dataframe? 【发布时间】:2020-04-14 09:16:37 【问题描述】:

我正在提取一个以以下格式检索数据的 API。

     data = ('2019-12-20': 'SMA': '216.0037',
              '2019-12-19': 'SMA': '215.4711',
              '2019-12-18': 'SMA': '214.9335',
              '2019-12-17': 'SMA': '214.4074')

目前,当我尝试运行“data = pd.DataFrame(data)”时,它会返回一个包含 2 行的数据框,该数据框将每个日期用作单独的列,并为每一行提供一个字典作为值(下面的示例)。

           2019-12-20       |       2019-12-19     |      2019-12-18
 0  " 'SMA' : '216.0037'  |  'SMA': '215.4710" | 'SMA': '214.9335'
 1            NaN           |         NaN          |        NaN

我想弄清楚如何将这些数据转换为以下格式的数据框。

        date     |   SMA
 ----------------------------
 0  '2019-12-20' | '216.0036'
 1  '2019-12-19' | '215.4711'
 2  '2019-12-18' | '214.9335'
 3  '2019-12-17' | '214.4047'

任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

IIUC

pd.DataFrame(data).T.reset_index().rename(columns='index':'date')
         date       SMA
0  2019-12-20  216.0037
1  2019-12-19  215.4711
2  2019-12-18  214.9335
3  2019-12-17  214.4074

from_dict

pd.DataFrame.from_dict(data,'index').reset_index().rename(columns='index':'date')
                 SMA
2019-12-17  214.4074
2019-12-18  214.9335
2019-12-19  215.4711
2019-12-20  216.0037

【讨论】:

【参考方案2】:

从您的代码看来,数据是一个字典(外括号被忽略)。

data = (
    '2019-12-20': 'SMA': '216.0037',
    '2019-12-19': 'SMA': '215.4711',
    '2019-12-18': 'SMA': '214.9335',
    '2019-12-17': 'SMA': '214.4074'
)
assert isinstance(data, dict)

如果是这样,那么您想要的数据框可以按如下方式生成。

pd.DataFrame(
    [(k, v['SMA']) for k, v in data.items()],
    columns=['date', 'SMA']
)

输出:

         date       SMA
0  2019-12-20  216.0037
1  2019-12-19  215.4711
2  2019-12-18  214.9335
3  2019-12-17  214.4074

【讨论】:

【参考方案3】:

您可以使用 pandas.DataFrame.T 实现此目的

通过将行写入列来反映 DataFrame 在其主对角线上,反之亦然。属性 T 是方法的访问器。

df = pd.DataFrame(data).T.reset_index().rename(columns='index':'date') 将返回:

         date       SMA
0  2019-12-20  216.0037
1  2019-12-19  215.4711
2  2019-12-18  214.9335
3  2019-12-17  214.4074

【讨论】:

以上是关于如何将字典元组转换为有组织的数据框?的主要内容,如果未能解决你的问题,请参考以下文章

如何将带有元组键的 python 字典转换为 pandas 多索引数据框?

将数据框转换为元组列表字典

将元组列表的字典转换为数据框

将带有元组作为键的嵌套字典转换为数据框

使用元组键将 Pandas 数据框转换为字典以进行三元图

将带有元组键(key1,key2)的字典转换为数据框,当key1是索引并且key2时,值是列