Python 熊猫数据帧-选择和索引
我有这个数据框对象Python 熊猫数据帧-选择和索引,python,pandas,dataframe,data-science,Python,Pandas,Dataframe,Data Science,我有这个数据框对象 df = pd.DataFrame(randn(5,4),['A','B','C','D','E'],['W','X','Y','Z']) 我执行,这是由行A、B、C、D、E和W、X、Y、Z列组成的表 这些W,X,Y,Z列中的每一列实际上都是熊猫系列,W是熊猫系列,X和Y和Z,它们都共享一个共同的索引 这基本上是一个数据帧,一个共享索引的系列集 在这里之前没关系。:) 我可以这样抓取W列大于0的所有数据值: 请注意,C行将消失 但我不明白以下几点: 这句话的意思是什么
df = pd.DataFrame(randn(5,4),['A','B','C','D','E'],['W','X','Y','Z'])
我执行,这是由行A、B、C、D、E
和W、X、Y、Z
列组成的表
这些W,X,Y,Z
列中的每一列实际上都是熊猫系列,W
是熊猫系列,X
和Y
和Z
,它们都共享一个共同的索引
这基本上是一个数据帧,一个共享索引的系列集
在这里之前没关系。:)
我可以这样抓取W列大于0的所有数据值:
请注意,C行将消失
但我不明白以下几点:
这句话的意思是什么
df[df['W']>0][['Y','X']]
结果是:
理论上,我将获取所有大于0的数据帧W
列值,然后根据什么标准或条件返回Y
和X
列
为什么我在Y
和X
列中获取这些值
目前,我正在研究大熊猫,我想知道这种行为的原因 当你这样做的时候
df[df['W']>0]
返回一个新的数据帧
。因此,当您将[['Y',X']]
放在这个数据帧的末尾时,您基本上在这个新的数据帧中做了一个简单的选择。列X
和Y
中显示的值只是此df的X
和Y
的值
更详细地说,
df['W']>0
将返回一个Boolean
序列,即值为True
或False
的序列。当您执行df[df['W']>0]
时,您正在使用此系列过滤您的df
。输出将是df
的行,其中df['W']>0
返回True
,如前两步所述:
它是函数的顺序执行。它在一个行中执行两个独立的操作
df[df['W']>0]
仅选择W列为正的行df[['X','Y']]
仅选择两个感兴趣的列df['W']>0
返回一个布尔序列,其中列大于零(true
),否则为falsedf[df['W']>0]
返回df
中的所有行,其中df['W']>0
为true
df['X']
返回数据帧的“X”列df[['X','Y']]
从数据帧返回列X
&Y
df[…]
可能具有不同的含义:
如果将此Python代码与示例excel进行比较,则可以说明:
IF(W>0,"Value if True(return Y and X)", "Value if False ("")")
df[df['W']>0][['Y','X']]当W大于0时,获取Y和X的列
df[df['W']>0]
在应用过滤条件后返回一个数据帧。然后[“Y”,“X”]
访问该数据帧的列Y
和X
。进行此选择的“正确”或惯用方法是使用.loc,df.loc[df['W']>0,['Y','X']]
@ScottBoston using.loc在执行选择操作时与性能或内存有一些关系吗?@bgarcial通常,您应该重新定义链接选择。要查找链接,请查找']['。
df[df['W']>0]
df[df['W']>0][['Y','X']]
IF(W>0,"Value if True(return Y and X)", "Value if False ("")")