2016-11-28 3 views
3

Ich bin neu in Pandas.Wie fügt man jeder geraden Reihe in einer Pandas-Datenrahmenspaltenreihe eine Zeichenkette hinzu?

Ich möchte eine neue Spalte zu einem Pandas Datenrahmen df hinzufügen und "Start" jeder ungeraden Zeile und "Stop" jeder geraden Zeile zuweisen.

Wenn ich jedoch df.iloc[1::2, :] = "Start" mache, füge ich an jeder 2. Stelle eine neue Zeile mit der Zeichenfolge "Start" in jede Spalte ein.

Ich weiß, dass in diesem Fall pandas nicht weiß, in welcher Spalte der "Start" -String zu setzen ist.

Allerdings konnte ich nicht die richtige Syntax herausfinden.

Antwort

4

Hier ist meine Lösung - Haben nicht die Optimierung Teil herausgefunden, aber eine ziemlich große Datenmenge angesichts dieser es ganz gut behandeln soll -

import pandas as pd 

df = pd.read_csv('temp.csv') 

df['New_Col'] = "Start" 

df.loc[1::2,"New_Col"] = "Stop" 

print df['New_Col'] 

Ausgang -

0  Start 
1  Stop 
2  Start 
3  Stop 
4  Start 
5  Stop 
6  Start 
7  Stop 
8  Start 
9  Stop 
10  Start 
11  Stop 
12  Start 
13  Stop 
14  Start 
15  Stop 
16  Start 
17  Stop 
18  Start 
19  Stop 
20  Start 
21  Stop 
22  Start 
23  Stop 
24  Start 
25  Stop 
26  Start 
27  Stop 
28  Start 
29  Stop 
     ... 
116 Start 
117  Stop 
118 Start 
119  Stop 
120 Start 
121  Stop 
122 Start 
123  Stop 
124 Start 
125  Stop 
126 Start 
127  Stop 
128 Start 
129  Stop 
130 Start 
131  Stop 
132 Start 
133  Stop 
134 Start 
135  Stop 
136 Start 
137  Stop 
138 Start 
139  Stop 
140 Start 
141  Stop 
142 Start 
143  Stop 
144 Start 
145  Stop 
Name: New_Col, dtype: object 
+1

Dank Mann - gelöst. Dies funktioniert perfekt mit einer 6-GB-Textdatei auf einem 8-GB-RAM-Gerät. – sudonym

+0

Wie würden Sie die "Start" - und "Stop" -Ereignisse zählen und die Nummer jedes Ereignisses in eine zusätzliche Spalte einfügen? – sudonym

+0

Nimm es einfach in eine separate Serie und handle damit ... wenn du es in den ursprünglichen Datensatz steckst, würde es denormalisieren - 'print df.groupby ('Ereignis') ['New_Col']. Agg (['count'])' –

Verwandte Themen