2015-06-19 87 views
3

我對Pandas非常陌生,但希望根據名稱爲Mel的條件創建另一個數據框。它看起來像我的新數據幀只是一個指針(僅基於打印出的索引號)的唯一舊指針。Pandas Python中的數據框理解以創建新的數據框

我基本上是在尋找這相當於:

BabyDataSet = [['Bob', 968], ['Jessica', 155], ['Mary', 77], ['John', 578], ['Mel', 973]] 
filtered_list = [x for x in BabyDataSet if x[0] == 'Mel'] 
print filtered_list 
df = pd.DataFrame(data=filtered_list, columns=['Names', 'Births']) 
print df 

mycode的:

import pandas as pd 

BabyDataSet = [['Bob', 968], ['Jessica', 155], ['Mary', 77], ['John', 578], ['Mel', 973]] 
#create dataframe 
df = pd.DataFrame(data=BabyDataSet, columns=['Names', 'Births']) 

#create a new dataframe for Bob 
new_df = df.ix[['Mel' in x for x in df['Names']]] 
print new_df 

回答

1

無需走DF,只是通過一個布爾條件過濾DF:

In [216]: 
new_df = df[df['Names']=='Mel'] 
new_df 

Out[216]: 
    Names Births 
4 Mel  973 

編輯

重置索引電話reset_index(),至於是否new_df是對原稿DF參考與否,它不是:

In [224]: 
new_df = df[df['Names']=='Mel'] 
new_df = new_df.reset_index() 
new_df 

Out[224]: 
    index Names Births 
0  4 Mel  973 

In [225]:  
new_df['Names'] = 'asdas' 
df 

Out[225]: 
    Names Births 
0  Bob  968 
1 Jessica  155 
2  Mary  77 
3  John  578 
4  Mel  973 
+0

這裏的指數仍4.這是否意味着如果我改變DF,new_df會也改變?我如何在new_df的0處開始索引? – user2242044

+0

你可以調用'reset_index()',看看我的更新,也不會影響原始df – EdChum

+0

如果我想使用contains而不是==? – user2242044

相關問題