x =pd.Series(np.arange(0,10))
y =pd.Series(np.arange(100,110))
df =pd.DataFrame({'x':x, 'y':y})
df
运算 | 变量[] | 变量.loc[] !!! 包含末尾 !!! | df.loc[] !!! 包含末尾 !!! | df[] |
取整列 | df.x
| df.loc[:,'x']
| df['x'] | |
取整行 | df.loc[2:5]
| df[2:5]
同一个[],既可以取列,也可以取行!!! | ||
ȡֵ | df.x[2:5]
| df.x.loc[2:5]
| df.loc[2:5, 'x'] 同左 | df[2:5, 'x'] TypeError: unhashable type: 'slice' |
加法 (index一致) | df.x[2:5] + df.y[2:5]
| df.x.loc[2:5] + df.y.loc[2:5]
| df.loc[2:5, 'x'] + df.loc[2:5, 'y'] 同左 | |
纵向 concat | pd.concat([df.x[2:5], df.y[3:6]])
| pd.concat([df.x.loc[2:5], df.y.loc[3:6]])
5
| pd.concat([df.loc[2:5, 'x'], df.loc[3:6, 'y']]) 同左 | |
横向 concat | pd.concat([df.x[2:5], df.y[3:6]], axis=1) NaN 105.0 | pd.concat([df.x.loc[2:5], df.y.loc[3:6]], axis=1)
NaN
5.0 106.0 | pd.concat([df.loc[2:5, 'x'], df.loc[3:6, 'y']], axis=1) 同左 | |
加法 (index不一致) | df.x[2:5] + df.y[3:6]
| df.x.loc[2:5] + df.y.loc[3:6] NaN
NaN | df.loc[2:5, 'x'] + df.loc[3:6, 'y'] 同左 | |
加法 (index不一致, 取values) | df.x[2:5].values + df.y[3:6].values array([105, 107, 109]) | df.x.loc[2:5].values + df.y.loc[3:6].values array([105, 107, 109, 111]) | df.loc[2:5, 'x'].values + df.loc[3:6, 'y'].values 同左 | |
加法 (reset index) | df.x[2:5].reset_index(drop=True) + df.y[3:6].reset_index(drop=True)
| df.x.loc[2:5].reset_index(drop=True) + df.y.loc[3:6].reset_index(drop=True)
111 | df.loc[2:5, 'x'].reset_index(drop=True) + df.loc[3:6, 'y'].reset_index(drop=True) 同左 | |
赋值 (index不一致) | df1 = df.copy() df1.x[2:5] = df1.y[3:6] df1
!!!不会对应索引!!! | df1 = df.copy() df1.x.loc[2:5] = df1.y.loc[3:6] df1
102
| df1 = df.copy() df1.loc[2:5,'x'] = df1.loc[3:6,'y'] df1 同左 | |
赋值 (index不一致, 取values) | df1 = df.copy() df1.x[2:5] = df1.y[3:6].values df1
| df1 = df.copy() df1.x.loc[2:5] = df1.y.loc[3:6].values df1
106
| df1 = df.copy() df1.loc[2:5,'x'] = df1.loc[3:6,'y'].values df1 同左 | |
赋值 (index不一致, reset index) | df1 = df.copy() df1.x[2:5] = df1.y[3:6].reset_index(drop=True) df1
| df1 = df.copy() df1.x.loc[2:5] = df1.y.loc[3:6].reset_index(drop=True) df1
105.0 106.0 NaN NaN
!!!对应到0开头的索引!!! | df1 = df.copy() df1.loc[2:5,'x'] = df1.loc[3:6,'y'].reset_index(drop=True) df1 同左 |