我有一个关于熊猫的一般性问题。我有一个名为d
的数据框,里面有很多关于公园的信息。所有唯一的公园名称都存储在一个名为parks
的数组中。另一列有一个位置ID,我想遍历parks数组并打印与该park名称相关联的唯一位置ID计数。你知道吗
d[d['Park']=='AKRO']
len(d['Location'].unique())
我数了24824次。你知道吗
x = d[d['Park']=='AKRO']
print(len(x['Location'].unique()))
给我一个位置计数1。为什么?我以为这些都是一样的,除了我存储在一个变量的信息。你知道吗
所以我尝试的循环自然不起作用。有人有小费吗?你知道吗
counts=[]
for p in parks:
x= d[d['Park']==p]
y= (len(x['Location'].unique()))
counts.append([p,y])
你可以试试
小心使用Panda的DataFrame函数,它是否会产生内联更改。例如,
d[d['Park']=='AKRO']
实际上并没有改变数据帧d。但是,x = d[d['Park']=='AKRO']
将d[d['Park']=='AKRO']
的输出设置为x
,因此x现在只有一个位置。你知道吗您是否手动检查过“AKRO”有多少唯一的位置标识?for循环在
y= len(x['Location'].unique())
周围的额外括号外看起来是正确的当您第一次使用子集时,您没有将
d[d['Park'] == 'ARKO']
赋值给任何对象。所以你并没有改变数据。你只查看了那部分数据。你知道吗当您分配
x = d[d['Park']=='AKRO']
时,x
现在只是您用第一个命令查看的部分。这就是为什么你得到了你所观察到的差异。你知道吗for循环实际上只在
d
的列中循环。如果您希望循环浏览这些行,可以使用以下命令。你知道吗然而,如果你想用for循环来计算地点的数量,你必须在每个公园中循环。像下面这样。你知道吗
但是,您可以不用迭代就完成您的目标。最好采用这种方法。你知道吗
相关问题 更多 >
编程相关推荐