Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python DataFrame括号访问器[]更喜欢列还是行?_Python_Pandas_Dataframe - Fatal编程技术网

Python DataFrame括号访问器[]更喜欢列还是行?

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.a

选择via[],它将对行进行切片


我不清楚第一个访问器如何“知道”选择列,第二个访问器如何“知道”选择行。这对我来说有点烦人,因为我也想通过索引访问列。

当您使用
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