我正在使用 python 3.9.7 和 Pandas 版本 1.3.4。
我正在嘗試在 Pandas 中創建一組標準化的列,但我的列一直作為 NaN 回傳。我分解了步驟并分配了具有非 NaN 值的中間變數,但是當我對資料框進行最終重新分配時,一切都變成了 NaN。我寫了一個更簡單的例子
import numpy as np
import pandas as pd
time = [1.0, 1.1, 2.0]
col1 = [1.0, 3.0, 6.0]
col2 = [3.0, 5.0, 9.0]
col3 = [1.5, 2.5, 3.5]
junk = ['wow', 'fun', 'times']
df2 = pd.DataFrame({'Time [days]': time, 'col1': col1, 'col2': col2,'col3': col3, 'junk':junk})
df2
num1 = len(df2.columns)
num2 = len(df2.columns[1:-1])
for col in df2.columns[1:-1]:
df3 = pd.DataFrame({str(col) '_normalized_values' : df2[str(col)]})
df2 = df2.join(df3)
del df3
df2.head()
df2.index = df2['Time [days]'].values
t=df2.index[1]
cols = df2.columns
a = df2.loc[t,cols[1:(num1-1)]]
b = (df2.groupby('Time [days]').sum().loc[t,cols[1:(num1-1)]] 1.0e-20)
c = a/b #c is coming back as the expected values
df2.loc[t,cols[num1:(num1 num2)]] = c
df2.loc[t,cols[num1:(num1 num2)]] #This step always prints all NaNs
我檢查了 c 的形狀和 LHS 分配,它們是相同的。我還檢查了 dtypes,它們也是一樣的。在這一點上,我對可能導致問題的原因一無所知。
uj5u.com熱心網友回復:
c和之間存在索引不匹配df2。更改最終作業的 RHS 以c.values解決問題:
df2.loc[t,cols[num1:(num1 num2)]] = c.values
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/389519.html
