在每两个元素之间插入一个空行(数据框+ pandas)

时间:2016-09-19 19:28:07

标签: pandas dataframe

我的数据框看起来像这样:

    Games
0   CAR 20
1   DEN 21
2    TB 31
3   ATL 24
4    SD 27
5    KC 33
6   CIN 23
7   NYJ 22

import pandas as pd
df =pd.read_csv('weekone.txt',)
df.columns=['Games']

我试图在每两个元素(团队)之间插入一个空行。 所以我希望它看起来像这样:

    Games
0   CAR 20
1   DEN 21

2    TB 31
3   ATL 24

4    SD 27
5    KC 33

6   CIN 23
7   NYJ 22

但是当我使用这个循环时

    for i in df2.index:
        if (df2.index[i])%2 == 1:
            df2.Games[i]=df2.Games[i]+('\n')
        else:
             df2.Games[i] = df2.Games[i] 

我得到这样的输出:

      Games
0     CAR 20
1   DEN 21\n
2      TB 31
3   ATL 24\n
4      SD 27
5    KC 33\n
6     CIN 23
7   NYJ 22\n

我做错了什么?谢谢。

1 个答案:

答案 0 :(得分:2)

你可以这样做:

In [172]: x
Out[172]:
    Games
0  CAR 20
1  DEN 21
2   TB 31
3  ATL 24
4   SD 27
5   KC 33
6  CIN 23
7  NYJ 22

In [173]: %paste
empty_line = pd.DataFrame([''], columns=x.columns, index=[''])

rslt = x.loc[:1]
g = x.groupby(x.index//2)

for i in range(1, len(g)):
    rslt = pd.concat([rslt.append(empty_line), g.get_group(i)])
## -- End pasted text --

In [174]: rslt
Out[174]:
    Games
0  CAR 20
1  DEN 21

2   TB 31
3  ATL 24

4   SD 27
5   KC 33

6  CIN 23
7  NYJ 22

索引的dtype现在为object

In [178]: rslt.index.dtype
Out[178]: dtype('O')

或将-1作为空行的索引:

In [175]: %paste
empty_line = pd.DataFrame([''], columns=x.columns, index=[-1])

rslt = x.loc[:1]
g = x.groupby(x.index//2)

for i in range(1, len(g)):
    rslt = pd.concat([rslt.append(empty_line), g.get_group(i)])
## -- End pasted text --

In [176]: rslt
Out[176]:
     Games
 0  CAR 20
 1  DEN 21
-1
 2   TB 31
 3  ATL 24
-1
 4   SD 27
 5   KC 33
-1
 6  CIN 23
 7  NYJ 22

index dtype:

In [181]: rslt.index.dtype
Out[181]: dtype('int64')