Pandas (0.9.1) を使用して物理コードを記述しています。私は2つのデータフレームを持っています:
レベル:
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) で結合する必要があります: 最初に atom、ion、level_number_upper、次に atom、ion、level_number_lower です。結合を事前計算する方法はありますか - メモリは問題ではありませんが、速度は問題です。
また、レベル (原子、イオン) をグループ化し、レベルに対して操作を行う必要があります。私はこれをすでに(信じられないほど高速に)実行しましたが、結果のシリーズを行のデータフレームに結合するのに問題がありました。
どうすればいいですか?
乾杯ヴォルフガング
更新 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の行で結合/マージしたい