Pandas加入分组和正常数据帧

2024-09-24 04:16:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我用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

线条:

^{pr2}$

我有几件事要做: 我需要用线(原子、离子、能级)连接能级:首先是原子,离子,能级上的_数,然后是原子,离子,能级_数,更低。有没有一种方法可以预先计算连接内存不是问题,但速度是个问题。在

我还需要对能级(原子,离子)进行分组,并对能级进行运算。我已经这样做了(难以置信的快),但是在将结果系列与lines dataframe连接起来时遇到了困难。在

我该怎么做?在

干杯 沃尔夫冈

更新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)

然后我想用原子序数和离子数的行来连接/合并分组数据


Tags: 数据代码numbergroupcalcnullenergyfunc
1条回答
网友
1楼 · 发布于 2024-09-24 04:16:58

也许有更好的方法,但是也许数据框合并()会在这里工作。数据框合并()在两个数据帧上工作,因此在apply()之后的一系列中,为每个(atom,ion)对计算的值需要首先放在一个数据帧中,此时还可以指定最后的列名。在

In [9]: grouped_vals = grouped_data.apply(calc_group_func)

In [10]: grouped_vals
Out[10]: 
atomic_number  ion_number
0              0             0.517541
               1             0.046833
1              0             0.253188
               1             0.440194

In [11]: lines.merge(pd.DataFrame({'group_val': grouped_vals}),
   ....:             left_on=['atomic_number', 'ion_number'],
   ....:             right_index=True)
Out[11]: 
    atomic_number  ion_number  group_val
id                                      
a               0           0   0.517541
b               0           0   0.517541
c               0           1   0.046833
d               0           1   0.046833
e               1           0   0.253188
f               1           0   0.253188
g               1           1   0.440194
h               1           1   0.440194

相关问题 更多 >