我正在使用 Pandas (0.9.1) 编写物理代码。我有两个数据框:
级别:
class 'pandas.core.frame.DataFrame'>
Int64Index: 37331 entries, 0 to 37330
Data columns:
atomic_number 37331 non-null values
ion_number 37331 non-null values
level_number 37331 non-null values
energy 37331 non-null values
g 37331 non-null values
metastable 37331 non-null values
线路:
<class 'pandas.core.frame.DataFrame'>
Int64Index: 314338 entries, 0 to 314337
Data columns:
id 314338 non-null values
wavelength 314338 non-null values
atomic_number 314338 non-null values
ion_number 314338 non-null values
f_ul 314338 non-null values
f_lu 314338 non-null values
level_number_lower 314338 non-null values
level_number_upper 314338 non-null values
dtypes: float64(3), int64(7)
我需要做几件事:我需要用线(原子、离子、级别)连接级别:首先在 atom、ion、level_number_upper 上,然后在 atom、ion、level_number_lower 上。有没有办法预先计算连接 - 内存不是问题,但速度是。
我还需要对级别进行分组(在原子、离子上)并在级别上进行操作。我已经这样做了(非常快),但是在将结果系列与 lines 数据框连接起来时遇到了麻烦。
我该怎么做呢?
干杯沃尔夫冈
更新 v1:
为了显示我想在此处加入合并的代码片段
def calc_group_func(group):
return np.sum(group['g']*np.exp(-group['energy'])
grouped_data = levels.group_by('atomic_number', 'ion_number')
grouped_data.apply(calc_group_func)
然后我想用 atomic_number 和 ion_number 上的行加入/合并分组数据