python - python dataframe'de aşağıdaki işlemi nasıl gerçekleştiririm
Nov 08 2020
aşağıda benim df
df = pd.DataFrame({
'Sr. No': [1, 2, 3, 4, 5, 6],
'val1' : [2,3,2,4,1,2],
})
Aşağıdaki şekillerde gösterildiği gibi çıktı val2 istiyorum. satır1, val1 satır1 ile aynıdır, ancak satır2 ve aşağısı, gösterildiği gibi bir formül kullanılarak hesaplanır
Yanıtlar
1 mlang Nov 08 2020 at 12:34
Dolayısıyla, örneğin C4, C3'ün hesaplanmasına bağlı olduğundan, tüm satırlar öncekine bağlıdır. Yani yapabileceğimiz şey, doğrudan uyuşuk diziler üzerinde çalışmaktır.
sr_no_vals = df['Sr. No'].values
val1_vals = df['val1'].values
val2_vals = [val1_vals[0]]
for i in range(1, len(sr_no_vals)):
calculated_value = (((1 + val2_vals[i - 1]) ** sr_no_vals[i - 1]) * (1 + val1_vals[i])) ** (1 / sr_no_vals[i])
val2_vals.append(calculated_value)
df['val2'] = val2_vals
Numpy dizilerle çalışırken, işlemi büyük veriler için çok büyük bir faktörle hızlandırmak için numba gibi tam zamanında bir derleyici de kullanabiliriz.
@numba.jit(nopython=True)
def calc_val2(val1_vals, sr_no_vals):
val2_vals = [val1_vals[0]]
for i in range(1, len(sr_no_vals)):
calculated_value = (((1 + val2_vals[i - 1]) ** sr_no_vals[i - 1]) * (1 + val1_vals[i])) ** (1 / sr_no_vals[i])
val2_vals.append(calculated_value)
return val2_vals
df['val2'] = calc_val2(val1_vals, sr_no_vals)
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'
Tom Girardi Dolandırıcılık Suçlamalarından Yargılanma Yetkisinin Belirlenmesi İçin Duruşmaya Katıldı