У меня есть огромный массив данных pandas, называемый df со столбцами «Features», «k», «r2. Последние два столбца содержат числа, а первая строка содержит строки списков (например,« [Preop SC, Preop CC]).").
Я хотел бы разделить информационный кадр на меньшие информационные кадры. Один информационный кадр на каждую комбинацию" Особенности "-" k ", используя вложенные циклы.
К сожалению, это выдает ValueError: Lengths must match to compare
.
Я пробовал разные методы нарезки для получения z: df[df["Features"]==feat]
и * 1008. * Так как, когда я печатаю объекты, вместо знака кавычки появляется ["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