python - 如何在 pandas 数据框中取消堆叠字典列?

标签 python pandas dataframe

我有以下格式的数据框

df = pd.DataFrame(
                 {"company":["McDonalds","Arbys","Wendys"],
                  "City":["Dallas","Austin","Chicago"],
                  "Datetime":[{"11/23/2016":"1","09/06/2011":"2"},
                              {"02/23/2012":"1","04/06/2013":"2"},
                              {"10/23/2017":"1","05/06/2019":"2"}]})
df
>>>    Company    City             Datetime
>>>    McDonalds  Dallas  {'11/23/2016': '1', '09/06/2011':'2'}
>>>    Arbys      Austin  {'02/23/2012': '1',  '04/06/2013':'2'}
>>>    Wendys     Chicago {'10/23/2017': '1',  '05/06/2019':'2'}

“Datetime”列中的字典是一个字符串,因此我必须使用 ast.literal_eval 将其读入 python 字典

我想根据日期时间中的值取消堆叠数据帧,以便输出如下所示:

df_out

>>>    Company    City    Date            Value
>>>    McDonalds  Dallas  11/23/2016      1
>>>    McDonalds  Dallas  09/06/2011      2
>>>    Arbys      Austin  02/23/2012      1
>>>    Arbys      Austin  04/06/2013      2
>>>    Wendys     Chicago 10/23/2017      1
>>>    Wendys     Chicago 05/06/2019      2

我对这个有点迷失,我知道我需要迭代行并读取每个字典,所以我想到使用 df.iterrows() 并创建命名元组每行值不会改变,然后循环字典本身附加不同的日期时间值,但我不确定这是最有效的方法。任何提示将不胜感激。

最佳答案

我的尝试:

(df.drop('Datetime', axis=1)
  .merge(df.Datetime.agg(lambda x: pd.Series(x))
           .stack().reset_index(-1),
         left_index=True, 
         right_index=True
        )
   .rename(columns={'level_1':'Date', 0:'Value'})
)

输出:

     company     City        Date Value
0  McDonalds   Dallas  11/23/2016     1
0  McDonalds   Dallas  09/06/2011     2
1      Arbys   Austin  02/23/2012     1
1      Arbys   Austin  04/06/2013     2
2     Wendys  Chicago  10/23/2017     1
2     Wendys  Chicago  05/06/2019     2

关于python - 如何在 pandas 数据框中取消堆叠字典列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59219783/

相关文章:

python - 解释(并使用)Fabric 本地命令的输出

python - Py3k : What's more pythonic - one import with commas or many imports?

python - 根据最大数量 pandas Dataframe 将订单数据分割成新行

python - Plotly:如何在条形图中使用 for 循环或列表作为名称属性?

python - 使用 pandas 或 numpy 将数据拆分为 'classes'

python - 将 Groupby 循环到图形,然后按 Groupby 进行子图

python - 将值分配给不同行中的相同名称

追加数据帧时出现 Pandas 错误 : invalid dtype determination in get_concat_dtype

python - Pandas 根据重复的索引数据框创建多个数据框

获取我最新推文的 Python 脚本在我的服务器上停止工作