簡體   English   中英

Pandas 多索引數據透視表日期格式隨排序和精度損失而變化

[英]Pandas Multiindex Pivot Table Date Format Change with Sorting and Loss of Precision

我有一個看起來像這樣的數據框

                                                 data
    time                       market
    2020-03-02 00:00:00        Commercial        78.0
                               Residential       79.0
    2020-03-02 04:45:15        Commerical        73.0
                               Residential       79.0
    2020-03-02 06:45:29        Commerical        79.0
                               Residential       71.0

我想要做的是,如果用戶選擇不同的時間格式,例如 %Y-%m-%d,將其應用於第一列。 但是,如果發生這種情況,該列中有重復項(例如,將有 3 個 2020-03-02 值),Multiindex.set_levels 不接受。 所以我需要以某種方式將它們組合在一起並對值求和,同時保持按時間順序排序。

理想輸出

                                        data
    time              market
    2020-03-02        Commercial        230.0
                      Residential       229.0

我的代碼

elem = df.index.get_level_values(0).sort_values().strftime("%Y-%m-%d")
df.index.set_levels(elem, level=0, inplace=True, verify_integrity=False)
df.groupby(['time', 'market']).sum()

此代碼導致時間列和市場列中出現重復,這很奇怪。 似乎它幾乎連接了市場列中的值

此外,我真的不想通過展平它或類似的東西來改變結構以不限制用戶。

IIUC,您可以按天和markettime分組。 此外,您需要確保timedatetime time類型:

(df.groupby([df.index.get_level_values('time')
               .normalize(), 'market'])
   .sum()
)

輸出:

                         data
time       market            
2020-03-02 Commercial   230.0
           Residential  229.0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM