2016-09-19 1 views
0

Mein Datenrahmen sieht dies so etwas wie:eine leere Zeile zwischen jeweils zwei Elementen einer Spalte (Datenrahmen + Pandas) Einfügen

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'] 

Ich versuche, zwischen je zwei Elementen einer Leerzeile zu setzen (Teams). So will ich es wie folgt aussehen:

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 

Aber wenn ich mit dieser Schleife

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] 

ich eine Ausgabe wie diese bekommen:

 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 

Was bin Ich mache falsch? Vielen Dank.

+0

fragen Sie nach Repräsentation (d. H. wie man seinen DF auf diese Weise druckt) oder möchten Sie leere Zeilen (und leere Indizes) in Ihrem DF haben (d. h. mehr Zeilen haben)? – MaxU

+0

Hallo, ich möchte leere Zeilen in meinem DF nicht nur ausdrucken. Danke. – Moondra

+0

Sie möchten auch leere Einträge für die Indexwerte haben? – MaxU

Antwort

1

können Sie es auf diese Weise tun:

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 

der dtype Index ist object jetzt:

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

oder mit -1 als Index für leere Zeilen:

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') 
+0

Danke. Das ist wirklich nützlich. – Moondra

+0

@moondra, Sie sind willkommen :) Bitte beachten Sie [akzeptieren] (http://meta.stackexchange.com/a/5235) eine Antwort, wenn Sie denken, es hat Ihre Frage beantwortet – MaxU

+0

Hallo. Wenn ich die Antwort akzeptiere, wird der Thread gesperrt? Ich versuche immer noch, den Code zu verstehen, den du geschrieben hast, und ich könnte Fragen haben, wenn ich tiefer schreibe, damit meine Sorge ist, dass der Thread gesperrt wird und ich nicht in der Lage sein werde, diese Fragen zu stellen. – Moondra

Verwandte Themen