我有数据框。可以在下面看到一个摘要:
import pandas as pd
data = {'EVENT_ID': [112335580,112335580,112335580,112335580,112335580,112335580,112335580,112335580, 112335582,
112335582,112335582,112335582,112335582,112335582,112335582,112335582,112335582,112335582,
112335582,112335582,112335582],
'SELECTION_ID': [6356576,2554439,2503211,6297034,4233251,2522967,5284417,7660920,8112876,7546023,8175276,8145908,
8175274,7300754,8065540,8175275,8106158,8086265,2291406,8065533,8125015],
'BSP': [5.080818565,6.651493872,6.374683435,24.69510797,7.776082305,11.73219964,270.0383021,4,8.294425408,335.3223613,
14.06040142,2.423340019,126.7205863,70.53780982,21.3328554,225.2711962,92.25113066,193.0151362,3.775394142,
95.3786641,17.86333041],
'WIN_LOSE':[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0]}
df = pd.DataFrame(data, columns=['EVENT_ID', 'SELECTION_ID', 'BSP','WIN_LOSE'])
df.set_index(['EVENT_ID', 'SELECTION_ID'], inplace=True)
df.sortlevel(level=0, ascending=True, sort_remaining=True)
df = pd.DataFrame(data, columns=['EVENT_ID', 'SELECTION_ID', 'BSP','WIN_LOSE'])
df = df.sort_values(["EVENT_ID","BSP"])
df.set_index(['EVENT_ID', 'SELECTION_ID'], inplace=True)
df['Win_Percentage'] = 1/df['BSP']
df['Lose_Percentage'] = 1 - df['Win_Percentage']
对于每个EVENT_ID,因此索引级别为零,我希望基于Lose_Percentage列拟合线,指数,幂和对数的方程。
因此EVENT_ID 112335580的拟合线将基于(1,0.750000),(2、0.803181),(3、0.843129),(4、0.849658),(5、0.871401),(6、0.914764) ),(7、0.959506),(8、0.996297)。然后,将对所有其他EVENT_ID索引执行此操作。
要尝试执行此操作,我想将Lose_Percentage列转换为每个EVENT_ID的数组。为此,我尝试了以下操作:我想将Lose_Percentage
列转换为每个EVENT_ID
的数组。为此,我尝试了以下方法:
df["Lose_Percentage"][112335580].tolist()
我不想只访问一个,我想访问每个Lose_Percentage
的{{1}}列中的每个值,并将此列表传递给一个函数。
要使一行适合数据,我可以使用polyfit。所以我需要将数组传递给它。
此外,我看了看如何适应对数,幂和指数行,但找不到能做到这一点的函数
任何帮助,不胜感激。
桑迪
答案 0 :(得分:1)
没有必要提取值。首先,您定义一个适合并求值的函数
import cv2
im_A = cv2.imread(path_A, cv2.CV_LOAD_IMAGE_COLOR)
此功能可以分组使用:
def fit_eval(df):
y = df.values
x = np.arange(0, len(y)) + 1
z = np.polyfit(x, y, 1)
p = np.poly1d(z)
return p(x)
答案 1 :(得分:0)
您可以使用loc
-
extract = pd.Series(df.loc[112335580]["Lose_Percentage"])
extract.reset_index()