df.loc[0] 返回一个一维 pd.Series 对象,表示单行中的数据,通过索引提取。
df.loc[0:0] 返回一个二维 pd.DataFrame 对象,表示通过切片提取的一行数据框中的数据。
如果打印这些操作的结果,您可以更清楚地看到这一点:
import pandas as pd, numpy as np
df = pd.DataFrame(np.arange(9).reshape(3, 3))
res1 = df.loc[0]
res2 = df.loc[0:0]
print(type(res1), res1, sep='\n')
<class 'pandas.core.series.Series'>
0 0
1 1
2 2
Name: 0, dtype: int32
print(type(res2), res2, sep='\n')
<class 'pandas.core.frame.DataFrame'>
0 1 2
0 0 1 2
约定遵循 NumPy 索引/切片。这是很自然的,因为 Pandas 是基于 NumPy 数组构建的。
arr = np.arange(9).reshape(3, 3)
print(arr[0].shape) # (3,), i.e. 1-dimensional
print(arr[0:0].shape) # (0, 3), i.e. 2-dimensional