Python DataFrame括号访问器[]更喜欢列还是行?
我对这个例子很感兴趣/困惑: 选择一个列,生成一个系列,相当于df.a 及 选择via[],它将对行进行切片Python DataFrame括号访问器[]更喜欢列还是行?,python,pandas,dataframe,Python,Pandas,Dataframe,我对这个例子很感兴趣/困惑: 选择一个列,生成一个系列,相当于df.a 及 选择via[],它将对行进行切片 我不清楚第一个访问器如何“知道”选择列,第二个访问器如何“知道”选择行。这对我来说有点烦人,因为我也想通过索引访问列。当您使用df[1:3]语法时,您正在访问行。当您使用df['col_name']语法时,您正在访问列 如果要仅显示与给定值匹配的行,请使用: new_df1 = df[ df['col_name'] == 5 ] new_df2 = df[ df['col_name']
我不清楚第一个访问器如何“知道”选择列,第二个访问器如何“知道”选择行。这对我来说有点烦人,因为我也想通过索引访问列。当您使用
df[1:3]
语法时,您正在访问行。当您使用df['col_name']
语法时,您正在访问列
如果要仅显示与给定值匹配的行,请使用:
new_df1 = df[ df['col_name'] == 5 ]
new_df2 = df[ df['col_name'] >= 7 ]
new_df3 = df[ df['col_name'].isin(list_of_values) ]
希望这能为您节省几个小时的文档阅读时间。访问列是
[]
的主要用途。但是,当您传递切片时,它会:
使用DataFrame,在[]内部切片会对行进行切片。这是提供的
主要是为了方便,因为这是一种常见的操作
要按整数索引访问列,需要使用
.iloc
。例如,要访问位置2和3处的列,可以使用df.iloc[:,2:4]
。请注意,这是基于列的位置。您可能有名为2和3的列,但如果它们不在这些位置,它将不会选择它们。如果要按标签选择,请使用.loc
。例如,如果您想获取B列到D列:df.loc[:,“B”:“D”]
。与整数切片不同,这也将为您提供列D。有关详细信息:如果要按编号选择列,则不能使用单括号:
df = pd.DataFrame({'a':[1,2,5], 'b':[3,4,6]})
In [260]: df[:,1]
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-260-ff65926f441e> in <module>()
----> 1 df[:,1]
对于行切片和列编号选择,请使用iloc
:
In [263]: df.iloc[0:2,1]
Out[263]:
0 3
1 4
Name: b, dtype: int64
In [267]: df.loc[0:2,'a']
Out[267]:
0 1
1 2
2 5
Name: a, dtype: int64
对于行切片和按名称选择列,请使用loc
:
In [263]: df.iloc[0:2,1]
Out[263]:
0 3
1 4
Name: b, dtype: int64
In [267]: df.loc[0:2,'a']
Out[267]:
0 1
1 2
2 5
Name: a, dtype: int64
希望这有助于使用不同的约定进行切片/选择
In [267]: df.loc[0:2,'a']
Out[267]:
0 1
1 2
2 5
Name: a, dtype: int64