Python 3.x 关于熊猫的结构问题.下降法
下面的代码可以正常工作 但是为什么需要键入df[df[而不是下面的Python 3.x 关于熊猫的结构问题.下降法,python-3.x,pandas,oop,Python 3.x,Pandas,Oop,下面的代码可以正常工作 但是为什么需要键入df[df[而不是下面的 df2=df.drop(df[df['issue']=="prob"].index) df2.head() 我知道上面的方法不起作用,而前者起作用。我想知道为什么或者知道我应该用谷歌搜索什么 此外,如果您对更相关的标题有任何建议,我们将不胜感激。 谢谢! 选项1:df[df['issue']==“prob”]生成一个带有值子集的数据帧 选项2:df['issue']==“prob”为每一行生成一个带有布尔值
df2=df.drop(df[df['issue']=="prob"].index)
df2.head()
我知道上面的方法不起作用,而前者起作用。我想知道为什么或者知道我应该用谷歌搜索什么
此外,如果您对更相关的标题有任何建议,我们将不胜感激。
谢谢!- 选项1:
生成一个带有值子集的df[df['issue']==“prob”]
数据帧
- 选项2:
为每一行生成一个带有布尔值的df['issue']==“prob”
pandas.Series
适用于选项1,因为它知道只需删除选定的索引,而不是从选项2返回的所有索引.drop
- 我将使用以下方法删除行。
- 使用
(not)选择布尔选择的相反项。~
df=df[~(df.treatment='Yes')]
- 选择仅具有所需值的行
df=df[(df.treatment='No')]
- 使用
将熊猫作为pd导入
将numpy作为np导入
随机输入
#示例数据帧
np.random.seed(365)
随机种子(365)
行=25
数据={'a':np.random.randint(10,大小=(行)),
“组”:范围内(行)的[随机选择(['1-5','6-25','26-100','100-500','500-1000','>1000']),
“治疗”:[范围内(行)的随机选择(['Yes','No']),
“日期”:pd.bdate_范围(datetime.today(),freq='d',periods=rows.tolist()}
df=pd.DataFrame(数据)
df[df.treatment='Yes'].index
- 只生成
为treatment
的索引,因此'Yes'
仅删除列表中的索引df.drop(df[df.treatment='Yes'].index)
df[df.treatment=='Yes'].索引
[out]:
Int64Index([0,1,2,4,6,7,8,11,12,13,14,15,19,21],dtype='int64')
df.drop(df[df.treatment='Yes'].index)
[out]:
治疗日期
356-25第2020-08-15号
52500-1000号2020-08-17
9 0 500-1000编号2020-08-21
10 3 100-500编号2020-08-22
16 8 1-5第2020-08-28号
17 4 1-5第2020-08-29号
18 3 1-5第2020-08-30号
20 6 500-1000编号2020-09-01
22 6-25第2020-09-03号
23 8 100-500编号2020-09-04
24926-100第2020-09-05号
(df.treatment='Yes')。索引
- 生成所有索引,因此
df.drop((df.treatment=='Yes').index)
删除所有索引,留下一个空数据帧
(df.treatment='Yes')。索引
[out]:
范围索引(开始=0,停止=25,步骤=1)
df.drop((df.treatment='Yes').index)
[out]:
空数据帧
列:[a、组、治疗、日期]
索引:[]
df2=df.drop(df['issue']=="prob"].index)
df2.head()