In [ ]:
import pandas as pd
In [ ]:
# 参考 https://stackoverflow.com/questions/28757389/pandas-loc-vs-iloc-vs-ix-vs-at-vs-iat
df = pd.DataFrame({'age':[30, 2, 12, 4, 32, 33, 69],
'color':['blue', 'green', 'red', 'white', 'gray', 'black', 'red'],
'food':['Steak', 'Lamb', 'Mango', 'Apple', 'Cheese', 'Melon', 'Beans'],
'height':[165, 70, 120, 80, 180, 172, 150],
'score':[4.6, 8.3, 9.0, 3.3, 1.8, 9.5, 2.2],
'state':['NY', 'TX', 'FL', 'AL', 'AK', 'TX', 'TX']
},
index=['Jane', 'Nick', 'Aaron', 'Penelope', 'Dean', 'Christina', 'Cornelia'])
In [ ]:
df
In [ ]:
ss_Penelope = df.loc['Penelope']
ss_Penelope
In [ ]:
df_Jane_Nick = df.loc[['Jane', 'Nick']]
df_Jane_Nick
In [ ]:
df_Aaron_to_Dean = df.loc['Aaron':'Dean']
df_Aaron_to_Dean
In [ ]:
df_age_score_of_Jane_Nick = df.loc[['Jane', 'Nick'], ['age', 'score']]
df_age_score_of_Jane_Nick
In [ ]:
df.loc['Jane', 'age'] # 同一块内存上操作
In [ ]:
df.loc['Jane']['age'] # 内存有copy
In [ ]:
ss_Penelope = df.iloc[3]
ss_Penelope
In [ ]:
df_Jane_Nick = df.iloc[[0, 1]]
df_Jane_Nick
In [ ]:
df_Aaron_to_Dean = df.iloc[2:-2]
df_Aaron_to_Dean
In [ ]:
df_age_score_of_Jane_Nick = df.iloc[[0,1], [0,4]]
df_age_score_of_Jane_Nick
In [ ]:
row_names = df.index[[1, 3]]
row_names
In [ ]:
row_idxes = [df.index.get_loc(row) for row in row_names]
row_idxes
In [ ]:
col_names = df.columns[[2, 4]]
col_names
In [ ]:
col_idxes = [df.columns.get_loc(col) for col in col_names]
col_idxes
In [ ]:
ss_age_bt_30 = df.age > 30
ss_age_bt_30
In [ ]:
print(ss_age_bt_30.values)
In [ ]:
df.loc[df.age > 30]
In [ ]:
df.loc[ss_age_bt_30]
In [ ]:
df.loc[ss_age_bt_30.values]
In [ ]:
df.at['Dean', 'age']
In [ ]:
df.iat[4, 0]
In [ ]:
df['age'] # or df.age
In [ ]:
df.age
In [ ]:
df.iloc[:, 0]
In [ ]:
df[0:2]['age']
In [ ]:
df[0:2]