我试过融化,解栈和堆叠Pandas函数,但不明白如何实现它们。Dataframe 转换和重组:
von4xj4u1#
我认为所需的转换不能直接使用Pandas函数来完成,因为源数据结构不适合Pandas DataFrame的概念,除此之外,它也不包含目标DataFrame预期具有的所需列名和列的信息沿着必要的重复行数。请参见Python代码,它通过为数据表提供字典来说明这个问题:
import pandas as pd pd_json_dict_src = { 'Date':'2023-01-01', 'Time':'14:00', 'A':{ 'Intro':[ {'FIB':'1.00'}, {'DIB':'2.00'} ] }, 'B':{ 'Intro':[ {'FIB':'3.00'}, {'DIB':'4.00'} ] } } df_src = pd.DataFrame.from_dict(pd_json_dict_src) print(df_src) # ----------------------------------------------- pd_json_dict_tgt = { 'Date':['2023-01-01','2023-01-01'], 'Time':['14:00','14:00'], 'Area':['A','B'], 'Tech':['Intro','Intro'], 'FIB' :['1.00','3.00'], 'DIB' :['2.00','4.00'] } df_tgt = pd.DataFrame.from_dict(pd_json_dict_tgt) print(df_tgt)
印刷品
Date ... B Intro 2023-01-01 ... [{'FIB': '3.00'}, {'DIB': '4.00'}] [1 rows x 4 columns] Date Time Area Tech FIB DIB 0 2023-01-01 14:00 A Intro 1.00 2.00 1 2023-01-01 14:00 B Intro 3.00 4.00
我也没有看到任何易于编码的自动化方法能够将由字典定义的源数据结构转换为目标字典的数据结构。换句话说,似乎没有一种简单明了的通用方法来扁平化列式深度嵌套数据结构,尤其是在选择Python Pandas作为扁平化工具时,至少在这里没有其他答案证明我和这个陈述是错误的情况下。
omqzjyyz2#
创建 Dataframe :
df = pd.DataFrame(data=[["2023-01-01","14:00",1.0,2.0,3.0,4.0]]) 0 1 2 3 4 5 0 2023-01-01 14:00 1.00 2.00 3.00 4.00
设置索引列:
df = df.set_index([0,1]).rename_axis(["Date", "Time"]) 2 3 4 5 Date Time 2023-01-01 14:00 1.00 2.00 3.00 4.00
创建多级列:
df.columns = pd.MultiIndex.from_tuples([("A", "Intro", "FIB"), ("A", "Intro", "DIB"), ("B", "Intro", "FIB"), ("B", "Intro", "DIB")], names=["Area", "Tech", ""]) Area A B Tech Intro Intro FIB DIB FIB DIB Date Time 2023-01-01 14:00 1.00 2.00 3.00 4.00
在“区域”和“技术”级别上使用stack():
df = df.stack(["Area","Tech"]) DIB FIB Date Time Area Tech 2023-01-01 14:00 A Intro 2.00 1.00 B Intro 4.00 3.00
重置索引以创建列“日期”和“时间”并重复其值:
df = df.reset_index() Date Time Area Tech DIB FIB 0 2023-01-01 14:00 A Intro 2.00 1.00 1 2023-01-01 14:00 B Intro 4.00 3.00
2条答案
按热度按时间von4xj4u1#
我认为所需的转换不能直接使用Pandas函数来完成,因为源数据结构不适合Pandas DataFrame的概念,除此之外,它也不包含目标DataFrame预期具有的所需列名和列的信息沿着必要的重复行数。
请参见Python代码,它通过为数据表提供字典来说明这个问题:
印刷品
我也没有看到任何易于编码的自动化方法能够将由字典定义的源数据结构转换为目标字典的数据结构。
换句话说,似乎没有一种简单明了的通用方法来扁平化列式深度嵌套数据结构,尤其是在选择Python Pandas作为扁平化工具时,至少在这里没有其他答案证明我和这个陈述是错误的情况下。
omqzjyyz2#
创建 Dataframe :
设置索引列:
创建多级列:
在“区域”和“技术”级别上使用stack():
重置索引以创建列“日期”和“时间”并重复其值: