[英]Simple Pandas df calculation lost in infinity
我有中等大小的df(600K x 40),並且嘗試將元素明智的(按索引)系列值添加在一起,然后使用后續值創建新列。 但是,這需要24個小時以上才能完成。
Series1 = df.loc[df['ColumnX'] == 5, 'ColumnY']
Series2 = df.loc[df['ColumnX'] == 6, 'ColumnY']
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
。
這解釋了為什么您的代碼是錯誤的,但不一定是為什么它很慢。 我猜想在存在這么多缺失值的情況下,數據對齊是一個非常緩慢的操作。
您是要堆疊Series1
和Series2
而不是算術Series2
它們相加嗎? 如果是這樣,則應該執行pd.concat[Stack1,Stack2])
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.