我目前将 panda 用于数据科学目的,这是非常原始的,所以我确信有比我的更好的方法,可以以 excel 方式将列添加到从其他人计算的数据框中。
例如,我有一个数据框,其中有一个质量和一个周期,我想添加一个包含 (M/P)^(1/3) 的列,M 和 P 是换算成合适的单位。然后我写
day_sec=60.0*60.0*24.0
Msun=1.989 * 10**30
clean=reduced.dropna()
v=pd.DataFrame(clean['orbital_period'].apply(lambda x: x**(1/3.0))/clean['star_mass'].apply(lambda x: x**(1/3.0)), columns=list('v'))*day_sec/(Msun**(1/3.0))
clean.append(v)
这甚至不像我想要的那样,而且写和读都非常复杂(在这里,等式非常非常简单)。有什么建议吗?
你根本不应该在这里使用 apply。您应该将新列编写为一个矢量化操作,如下所示。
clean['v'] = clean['orbital_period'] ** (1/3.0) / clean['star_mass'] ** (1/3.0) *day_sec/(Msun**(1/3.0))
看起来可以简化为以下内容:
power = 1/3.0
(clean.orbital_period / (clean.star_mass * Msun)) ** power * day_sec
我是一名优秀的程序员,十分优秀!