【发布时间】:2018-05-12 00:35:23
【问题描述】:
我有一个类似这样的脚本:
import random
import pandas as pd
FA = []
FB = []
Value = []
df = pd.DataFrame()
df_save = pd.DataFrame(index=['min','max'])
days = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
numbers = list(range(24)) # FA.unique()
mix = '(pairwise combination of days and numbers, i.e. 0Monday,0Tuesday,...1Monday,1Tuesday,....)' 'I dont know how to do this combination btw'
def Calculus():
global min,max
min = df['Value'][boolean].min()
max = df['Value'][boolean].max()
for i in range(1000):
FA.append(random.randrange(0,23,1))
FB.append(random.choice(days))
Value.append(random.random())
df['FA'] = FA
df['FB'] = FB
df['FAB'] = df['FA'].astype(str) + df['FB'].astype(str)
df['Value'] = Value
mix_factor = df['FA'].astype(str) + df['FB'].astype(str)
for i in numbers:
boolean = df['FA'] == i
Calculus()
df_save[str(i)] = [min,max]
for i in days:
boolean = df['FB'] == i
Calculus()
df_save[str(i)] = [min,max]
for i in mix_factor.unique():
boolean = df['FAB'] == i
Calculus() #
df_save[str(i)] = [min,max]
我的问题是:还有另一种方法可以做同样的事情,但更高效?我的真实数据(在本例中为 df)是具有数百万行的 csv,这三个循环将永远持续下去。 也许使用“应用”,但我以前从未使用过它。
任何见解将不胜感激,谢谢。
【问题讨论】:
-
你需要profile你的代码才能知道哪个方法占用的时间最多。
-
@RafaelC 我会编辑我的帖子
-
@LuisMuñoz 我会尝试,但我知道这三个 for 循环大部分时间都在消耗
标签: python python-3.x performance pandas apply