繁体   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