儘管存在一些類似的問題,但我無法找到以下的直接答案。請注意,我來自R,對於Pandas來說還很新。假設我有一個熊貓數據框df,它包含兩列:「measure」(具有3個級別的unicode)和「Airquality」(numpy.float64)。計算熊貓數據框中的新列
我想創建名爲「color」的第三列,它基於「Airquality」中的值。此外,我想單獨爲「度量」的每個級別執行此操作。我已經成功地通過使用df.loc來分割「度量」上的df。然後,我計算出「色」分別在每個DF使用下面的代碼:
#calculate the maximum value of "Airquality" in df for each "measure" level:
maxi = df['Airquality'].max()
#initialize the column for "color" in df for each "measure" level:
df['color'] = None
#find the maximum value of "Airquality" in df for each "measure" level:
maxi = df['Airquality'].max()
#loop through the rows calculating and assigning the value for color,
#again, in df for each "measure" level
for i in range(len(df['Airquality'])):
df['color'][i] = int(100*df['Airquality'][i]/maxi)]
然而,這種運行相當緩慢的大型數據集我的工作,我敢肯定,必須有一個更好的方法......可能使用一些熊貓功能,而且可能不會將df分成三個,每個「測量」級別一個。發佈此信息希望從衆多Python天才之一學習。
真棒,可以(而且更快)!我有一點接近於此,但從來沒有得到它的工作。不知道'.transform(max)'與'.max()'有什麼不同,但我會讀到它。萬分感謝!哦,我一定會在將來提供一些示例數據。 – davo1979
最簡單的嘗試。 '.max()'給你一個具有三個最大值的系列,每個不同的度量都有一個值; '.transform(max)'爲您提供了一個具有六個值的系列,其中一個用於原始幀的每一行,並正確匹配。 – DSM