簡體   English   中英

如何划分不同大小的兩列(Pandas)?

[英]How to divide two columns with different sizes (Pandas)?

我有兩個光譜測量數據幀(都有兩列: IntensityWavelength ),我需要在給定的波長中將一個的強度除以另一個的強度,就好像我在划分兩個函數(I1 (λ) / I2 (λ)) 困難在於兩個數據幀的大小不同,並且一個的Wavelength值與另一個不完全相同(盡管顯然它們“接近”)。

1

一個有大約 200 條線(黑線),另一個有 3648 條(紅線)。 簡而言之,紅色圖比黑色圖“填充”了很多,但正如我之前所說,各個數據幀的Wavelength值並不完全相同。

它們也有不同的波長范圍:

  • 黑色從300.2795.5 nm
  • 紅色從199.975開始並上升到1027.43 nm

我喜歡做的是這樣的:

2

請注意,我將黑色的強度除以紅色的強度,將結果與相應Wavelength的結果添加到新的 df 中。 是否可以生成具有等效波長的新數據幀並在強度之間進行划分?

這是您問題的有效解決方案。 我目前的假設是儀器的采樣率是相同的。 由於您沒有提供任何樣本,因此我生成了一些數據。 答案基於連接Wavelength列上的兩個數據幀。

import pandas as pd
import numpy as np

##generating the test data
black_lambda = np.arange(300.2,795.5,0.1)
red_lambda = np.arange(199.975,1027.43,0.1)

I_black = np.random.random((1,len(black_lambda))).ravel()
I_red = np.random.random((1,len(red_lambda))).ravel()

df = pd.DataFrame([black_lambda,I_black]).T
df1 = pd.DataFrame([red_lambda,I_red]).T
df.columns=['lambda','I_black']
df1.columns=['lambda','I_red']

從這里跟隨

#setting lambda as index for both dataframes
df.set_index(['lambda'],inplace=True)
df1.set_index(['lambda'],inplace=True)

#concatenating/merging both dataframes into one
df3 = pd.concat([df,df1],axis=1)

#since both dataframes are not of same length, there will be some missing values. Taking care of them by filling previous values (optional). 
df3.fillna(method='bfill',inplace=True)
df3.fillna(method='ffill',inplace=True)

#creating a new column 'division' to finish up the task
df3['division'] = df3['I_black'] / df3['I_red']

print(df3)

輸出

           I_black     I_red  division
lambda                                
199.975   0.855777  0.683906  1.251308
200.075   0.855777  0.305783  2.798643
200.175   0.855777  0.497258  1.720993
200.275   0.855777  0.945699  0.904915
200.375   0.855777  0.910735  0.939655
...            ...       ...       ...
1026.975  0.570973  0.637064  0.896258
1027.075  0.570973  0.457862  1.247042
1027.175  0.570973  0.429709  1.328743
1027.275  0.570973  0.564804  1.010924
1027.375  0.570973  0.246437  2.316917

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM