2017-09-08 59 views
0

我有一個包含大量列的大型數據框。熊貓 - 在特定的iloc中將值添加到新的數據幀列

對於數據框中的每一行/索引,我執行一些操作,讀取一些輔助函數ata等,並獲得一個新值。有沒有辦法將新值添加到正確的行/索引處的新列中?

我可以使用.assign來添加一個新的列,但我正在循環遍歷行,並且只生成一次爲一個值添加的數據(生成它非常複雜)。當它生成時,我想立即將其添加到數據框,而不是等到生成整個系列。

這並不工作,並給出了一個關鍵的錯誤:

df['new_column_name'].iloc[this_row]=value 

我需要先什麼初始化列?

+0

這將是一個更容易回答,如果你提供你想執行的操作,數據幀的片段和預期輸出。 – Dark

+0

該操作相當複雜,涉及閱讀和操作各種數據集,從而最終生成一個數字。我想將該數字添加到現有數據框的正確行中。 – Rob

回答

1

如果你有一個像

import pandas as pd 
df = pd.DataFrame(data={'X': [1.5, 6.777, 2.444, pd.np.NaN], 'Y': [1.111, pd.np.NaN, 8.77, pd.np.NaN], 'Z': [5.0, 2.333, 10, 6.6666]}) 

相反ILOC的數據框,你可以使用.loc與行索引和列名像df.loc[row_indexer,column_indexer]=value

df.loc[[0,3],'Z'] = 3 

輸出:

 
     X  Y  Z 
0 1.500 1.111 3.000 
1 6.777 NaN 2.333 
2 2.444 8.770 10.000 
3 NaN NaN 3.000 
0

有分兩步創建&填充新的colu MN只使用一個行數... (以這種方式ILOC沒有使用)

首先,通過使用行號

rowIndex = df.index[someRowNumber] 

然後得到行索引值,使用行索引loc函數引用特定行並添加新列/值

df.loc[rowIndex, 'New Column Title'] = "some value" 

這兩個步驟可以合併成一條線,如下所示

df.loc[df.index[someRowNumber], 'New Column Title'] = "some value"