操纵熊猫系列 - 列中的空行

时间:2016-09-27 17:55:00

标签: python pandas dataframe series

我提前道歉,因为我认为这是一个基本的数据帧/系列选择问题,但我是一个新手,有点卡住了。

我有以下数据:

seas  off
2000  ARI    0.569369
      ATL    0.553398
      BAL    0.554404
      BUF    0.571429
      CAR    0.600000
      CHI    0.560886
      CIN    0.454945
      CLE    0.573196
      DAL    0.572707
      DEN    0.612850
      DET    0.550696

'海洋'然后在2001年重复,依此类推2015年.FWIW,当我尝试df['off']时,它不会返回“关闭”列。

无论如何,我想要做的基本上是为每个号码创建一个键。要做到这一点,我想为每一行复制年份,然后将其添加到“关闭”以获取密钥。如下:

seas  off    value     key
2000  ARI    0.569369  2000ARI
2000  ATL    0.553398  2000ATL
2000  BAL    0.554404  2000BAL
2000  BUF    0.571429  2000BUF
2000  CAR    0.600000  2000CAR
...
...
2001  CHI    0.560886  2001CHI
2001  CIN    0.454945  2001CIN
2001  CLE    0.573196  2001CLE
2001  DAL    0.572707  2001DAL
2001  DEN    0.612850  2001DEN
2001  DET    0.550696  2001DET

非常感谢...

约翰

1 个答案:

答案 0 :(得分:1)

我的猜测是你没有DataFrame,而是具有MultiIndex的系列。

import io
import pandas as pd

data = io.StringIO('''\
seas  off       value
2000  ARI    0.569369
2000  ATL    0.553398
2000  BAL    0.554404
2000  BUF    0.571429
2000  CAR    0.600000
2000  CHI    0.560886
2000  CIN    0.454945
2000  CLE    0.573196
2000  DAL    0.572707
2000  DEN    0.612850
2000  DET    0.550696
''')
df = pd.read_csv(data, delim_whitespace=True).set_index(['seas', 'off']).squeeze()

在这种情况下,这是你可以做的。首先,将seasoff放入DataFrame的列中:

df = df.reset_index()

然后通过连接keyseas列来创建列off

df['key'] = df['seas'].astype(str) + df['off']

最后,将seasoff发送回索引:

df = df.set_index(['seas', 'off'])

输出:

             value      key
seas off                   
2000 ARI  0.569369  2000ARI
     ATL  0.553398  2000ATL
     BAL  0.554404  2000BAL
     BUF  0.571429  2000BUF
     CAR  0.600000  2000CAR
     CHI  0.560886  2000CHI
     CIN  0.454945  2000CIN
     CLE  0.573196  2000CLE
     DAL  0.572707  2000DAL
     DEN  0.612850  2000DEN
     DET  0.550696  2000DET