![](/img/trans.png)
[英]What's the best way to replace NaN values (in a Pandas DataFrame) with values from a separate Pandas Series?
[英]What's the best way to sum all values in a Pandas dataframe?
我想出了這兩種方法。 有沒有更好的?
>>> import pandas as pd
>>> df = pd.DataFrame({'A': [5, 6, 7], 'B': [7, 8, 9]})
>>> print df.sum().sum()
42
>>> print df.values.sum()
42
只是想確保我沒有遺漏更明顯的東西。
df.to_numpy().sum()
df.values
是底層的numpy數組
df.values.sum()
是 numpy sum 方法並且速度更快
添加一些數字來支持這一點:
import numpy as np, pandas as pd
import timeit
df = pd.DataFrame(np.arange(int(1e6)).reshape(500000, 2), columns=list("ab"))
def pandas_test():
return df['a'].sum()
def numpy_test():
return df['a'].to_numpy().sum()
timeit.timeit(numpy_test, number=1000) # 0.5032469799989485
timeit.timeit(pandas_test, number=1000) # 0.6035906639990571
所以我們在我的機器上獲得了 20% 的性能,僅用於系列求和!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.