簡體   English   中英

如何刪除第一級索引,然后將剩余的索引值與 pd DataFrame 的自定義邏輯合並?

[英]How to drop 1st level index and then merge the remaining index values with custom logic for a pd DataFrame?

假設我有一個像這樣的 MultiIndex DataFrame:

                             price     volume
year   product   city
2010   A         LA          10        7
       B         SF          7         9 
       C         NY          7         6 
                 LA          18        21
                 SF          4         8
2011   A         LA          13        5 
       B         SF          2         4 
       C         NY          9         3
                 SF          2         0

我想做一個有點復雜的合並,其中刪除 DataFrame 索引(年份)的第一級,並根據一些自定義邏輯合並 DataFrame 中現在第一級索引(產品)中的重復項。 在這種情況下,我希望能夠將價格列設置為使用 2010 年外部索引中的值,將交易量列設置為使用 2011 年外部索引中的值,但我想要一個可以應用於更多列應該存在。

最終的 DataFrame 看起來像這樣,其中價格值來自 2010 年指數,交易量值來自 2011 年指數,其中缺失值用 NaN 填充。

                      price     volume
product   city
A         LA          10        5
B         SF          7         4 
C         NY          7         3 
          LA          18        NaN
          SF          4         0

您可以通過DataFrame.xs按第一級選擇,然后concat

df = pd.concat([df.xs(2010)['price'], df.xs(2011)['volume']], axis=1)

也可以使用loc

df = pd.concat([df.loc[2010, 'price'], df.loc[2011, 'volume']], axis=1)

print (df)
              price  volume
product city               
A       LA       10     5.0
B       SF        7     4.0
C       LA       18     NaN
        NY        7     3.0
        SF        4     0.0

暫無
暫無

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

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