当尝试对 pandas 数据帧进行切片时,它会引发“ValueError('Lengths must match to compare')”
Posted
技术标签:
【中文标题】当尝试对 pandas 数据帧进行切片时,它会引发“ValueError(\'Lengths must match to compare\')”【英文标题】:When trying to slice a pandas dataframe it raises "ValueError('Lengths must match to compare')"当尝试对 pandas 数据帧进行切片时,它会引发“ValueError('Lengths must match to compare')” 【发布时间】:2019-10-04 16:53:04 【问题描述】:我有一个名为 df 的大熊猫数据框,其中包含“Features”、“k”、“r2”列。最后两列都包含数字,第一行包含列表字符串(例如“[Preop SC, Preop CC] ")。 我想将数据帧切成更小的数据帧。每个“Features”-“k”组合都有一个数据框,使用嵌套循环。
不幸的是它抛出了ValueError: Lengths must match to compare
。
我也尝试了不同的切片方法来生成 z:df[df["Features"]==feat]
和 df.iloc
。因为当我打印功能时,["Preop SC","Preop CC"] 会出现,而不是如下所述的无引号版本。我还尝试通过将整个项目转换为字符串来删除它们,以使用 .replace 方法,但无济于事。
似乎没有什么可以帮助我使用功能。 (仅与 k 一起使用)
编辑:Groupby 似乎也不起作用,尽管我也是这方面的新手 代码如下:
import numpy as np
import pandas as pd
features=[['Preop SC', 'Preop CC'], ['Preop CC', 'Postoptag'], ['Preop CC',
'Pachy'], ['Preop CC', 'K2']]
df=[]
count=1
execute=1
while execute<3:
for i in features:
r2=np.random.normal()
df.append([i,count,r2])
count+=1
execute+=1
count=1
df=pd.DataFrame(df)
df.columns=["Features","KNeighbors","r2 score"]
summary=[] #Mean of results by feature-k combination
for feat in features:
for k in range(1,5):
temp=o.loc[(o["Features"]==feat)&(o["KNeighbors"]==k):,]
summary.append([feat,k,temp["r2 score"].mean()])
summary=pd.Dataframe(summary)
print(summary)
~~~~~~~~~~~~~~~~~~~~
This is what df looks like:
Features KNeighbors r2 score
0 [Preop SC, Preop CC] 1 0.880299
1 [Preop CC, Postoptag] 2 0.681024
2 [Preop CC, Pachy] 3 -1.925969
3 [Preop CC, K2] 4 1.132059
4 [Preop SC, Preop CC] 1 0.397732
5 [Preop CC, Postoptag] 2 -0.969017
6 [Preop CC, Pachy] 3 -0.173293
7 [Preop CC, K2] 4 0.277422
this is what summary should look like
0 [Preop SC, Preop CC] 1 0.6390155
1 [Preop CC, Postoptag] 2 -0.1439965
2 [Preop CC, Pachy] 3 -1.049631
3 [Preop CC, K2] 4 0.7047405
Any tips will be dearly appreciated
【问题讨论】:
您能否添加示例输入和预期输出 【参考方案1】:使用 .apply 方法将列表转换为字符串允许您使用 .groupby:
df["Features"]=df.Features.apply(str)
summary=df.groupby("Features").mean()
print(summary)
【讨论】:
以上是关于当尝试对 pandas 数据帧进行切片时,它会引发“ValueError('Lengths must match to compare')”的主要内容,如果未能解决你的问题,请参考以下文章
为啥graphQl在尝试对查询进行切片时返回“字段上的未知参数'first'......”错误?