2015-11-16 31 views

cevap

18

ile 'Sales' < s ikincisi olan verilere sahip olur Sen boolean indexing kullanabilirsiniz:

df = pd.DataFrame({'Sales':[10,20,30,40,50], 'A':[3,4,7,6,1]}) 
print (df) 
    A Sales 
0 3  10 
1 4  20 
2 7  30 
3 6  40 
4 1  50 

s = 30 

df1 = df[df['Sales'] >= s] 
print (df1) 
    A Sales 
2 7  30 
3 6  40 
4 1  50 

df2 = df[df['Sales'] < s] 
print (df2) 
    A Sales 
0 3  10 
1 4  20 

Ayrıca olası invert mask olduğunu ~ tarafından:

mask = df['Sales'] >= s 
df1 = df[mask] 
df2 = df[~mask] 
print (df1) 
    A Sales 
2 7  30 
3 6  40 
4 1  50 

print (df2) 
    A Sales 
0 3  10 
1 4  20 

print (mask) 
0 False 
1 False 
2  True 
3  True 
4  True 
Name: Sales, dtype: bool 

print (~mask) 
0  True 
1  True 
2 False 
3 False 
4 False 
Name: Sales, dtype: bool 
+1

gibi iki dataframes bölünmüş olabilir groupby kullanarak? Çünkü bu şekilde df1 oluşturmak için indeksi açmalıyız ve df2 için aynı durum için başka bir zaman. Ama her iki veri çerçevesini tek bir satırda nasıl elde edeceğimi anlayamıyorum .. – ysearka

+1

Maalesef sadece bu çözüm olduğunu düşünüyorum - bkz. [Yemek kitabı] (http://pandas.pydata.org/pandas-docs/stable/cookbook .html # bölme). – jezrael

2

iki kez dataframe kesmeye gerek kalmadan bunu yapmanın bir yolu var mı size

In [1047]: df1, df2 = [x for _, x in df.groupby(df['Sales'] < 30)] 

In [1048]: df1 
Out[1048]: 
    A Sales 
2 7  30 
3 6  40 
4 1  50 

In [1049]: df2 
Out[1049]: 
    A Sales 
0 3  10 
1 4  20 
İlgili konular