2016-07-01 17 views
2

Wie das in einer Pandas Datenrahmen solche Spalten mit unterschiedlichen Datentypen verketten, wenn Spalte number mit Spalte operator verkettet ist, und ich habe eine groupby('user').sum(), kann ich die entsprechende Aggregation haben:Wie concat Pandas Datenrahmen Spalten

number operator user 
id      
1  193  - A 
2  332  + B 
3  4434  + A 
4  432  - C 
5  652  + C 
6  567  + D 


#after concat: 

    number operator user 
id      
1  -193  - A 
2  332  + B 
3  4434  + A 
4  -432  - C 
5  652  + C 
6  567  + D 


#df.groupby('user').sum() 

     number 
user   
A  4241 
B  332 
C  220 
D  567 

Antwort

2

Verwenden loc mit boolean Maske die ‚Zahl‘ Werte negativ zu machen:

In [34]: 
df.loc[df['operator'] == '-', 'number'] = -df['number'] 
df 

Out[34]: 
    number operator user 
id      
1  -193  - A 
2  332  + B 
3  4434  + A 
4  -432  - C 
5  652  + C 
6  567  + D 

Sie können dann groupby auf ‚user‘ sum auf ‚Zahl‘ nennen kann colu mn:

In [35]:  
df.groupby('user')['number'].sum() 

Out[35]: 
user 
A 4241 
B  332 
C  220 
D  567 
Name: number, dtype: int64 
Verwandte Themen