簡體   English   中英

簡單的熊貓df計算無窮大

[英]Simple Pandas df calculation lost in infinity

設定

我有中等大小的df(600K x 40),並且嘗試將元素明智的(按索引)系列值添加在一起,然后使用后續值創建新列。 但是,這需要24個小時以上才能完成。

首先,我做兩個系列:

(來自具有某些約束的原始df)

 Series1 = df.loc[df['ColumnX'] == 5, 'ColumnY']
 Series2 = df.loc[df['ColumnX'] == 6, 'ColumnY']

其次,我將它們添加到一起,並作為新列插入原始df中:

 df['column1plus2'] = Series1 + Series2

在功能弱的中型服務器上計算時間不應該超過24小時,對嗎? 我是從根本上做錯了嗎?

因為你的選擇(5比6)的互斥性,在所有行的指數Series1是從所有行的索引提供不同Series2 運算符+使用數據對齊來查找匹配的行,但不能。 因此,它改為使用NaN的值創建匹配的虛擬變量,並將其添加到您的系列中的值。 (當然,結果也是NaN 。)例如,如果您在Series1具有行10(值3.14),那么Series2中將沒有相同編號的Series2 熊貓將在Series2創建第10行,並將其值設置為NaN ,因為它沒有更好的了解。 現在,第10行的求和結果為3.14+NaN=NaN

這解釋了為什么您的代碼是錯誤的,但不一定是為什么它很慢。 我猜想在存在這么多缺失值的情況下,數據對齊是一個非常緩慢的操作。

您是要堆疊Series1Series2而不是算術Series2它們相加嗎? 如果是這樣,則應該執行pd.concat[Stack1,Stack2])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM