[英]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.