我有两个函数应用于 Dataframe
res = df.apply(lambda x:pd.Series(list(x)))
res = res.applymap(lambda x: x.strip('"') if isinstance(x, str) else x)
{{Update}} Dataframe有近700000行。这需要很多时间来运行。
如何减少运行时间?
样本数据:
A
----------
0 [1,4,3,c]
1 [t,g,h,j]
2 [d,g,e,w]
3 [f,i,j,h]
4 [m,z,s,e]
5 [q,f,d,s]
输出:
A B C D E
-------------------------
0 [1,4,3,c] 1 4 3 c
1 [t,g,h,j] t g h j
2 [d,g,e,w] d g e w
3 [f,i,j,h] f i j h
4 [m,z,s,e] m z s e
5 [q,f,d,s] q f d s
这行代码res = df.apply(lambda x:pd.Series(list(x)))
从一个列表中获取项目,并如上所示逐个填充到每一列中。大约有38列。
2条答案
按热度按时间8ljdwjyq1#
我认为:
应改为:
第二,如果不是混合列值-数字与字符串:
oxcyiej72#
也许回复晚了,但对于像我这样的人谁绊倒在这个主题与相同的问题,它可能仍然值得添加我的发现。
我使用了swifter库。Pandas Dataframe 上的apply函数至少快两倍,它也消耗了更少的RAM:
这就是全部。它对我来说非常好用。它还包括一个在终端的状态栏,这也非常有帮助。
我的解决方案来自:https://towardsdatascience.com/do-you-use-apply-in-pandas-there-is-a-600x-faster-way-d2497facfa66