我目前正在我的 pandas 資料框中創建一個新列,它基于使用另一列中的值的簡單計算來計算一個值,并從中減去一個簡單的值。這是我當前的代碼,它幾乎給了我想要的輸出(為復制而縮短的示例):
subtraction_value = 3
data = pd.DataFrame({"test":[12, 4, 5, 4, 1, 3, 2, 5, 10, 9]}
data['new_column'] = data['test'][::-1] - subtraction_value
運行時,這給了我當前的輸出:
print(data['new_column'])
[9,1,2,1,-2,0,-1,3,7,6]
但是,如果我想使用不同的值在列上減去 position [0],然后在列的位置上使用原始減法值,然后再次[1:3]在 position 上使用第二個值[4],并重復這種模式,我該怎么做迭代地?我意識到我可以使用 for 回圈來實作這一點,但出于性能原因,我想以另一種方式做到這一點。我的新輸出理想情況下如下所示:
subtraction_value_2 = 6
print(data['new_column'])
[6,1,2,1,-5,0,-1,3,4,6]
我希望這對我想要實作的目標有意義,任何幫助將不勝感激。
uj5u.com熱心網友回復:
您可以使用位置索引:
subtraction_value_2 = 6
col = data.columns.get_loc('new_column')
data.iloc[0::4, col] = data['test'].sub(subtraction_value_2).iloc[0::4]
或與numpy.where:
data['new_column'] = np.where(data.index%4,
data['test']-subtraction_value,
data['test']-subtraction_value_2)
輸出:
test new_column
0 12 6
1 4 1
2 5 2
3 4 1
4 1 -5
5 3 0
6 2 -1
7 5 2
8 10 4
9 9 6
uj5u.com熱心網友回復:
subtraction_value = 3
subtraction_value_2 = 6
data = pd.DataFrame({"test":[12, 4, 5, 4, 1, 3, 2, 5, 10, 9]})
data['new_column'] = data.test - subtraction_value
data['new_column'][::4] = data.test[::4] - subtraction_value_2
print(list(data.new_column))
輸出:
[6, 1, 2, 1, -5, 0, -1, 2, 4, 6]
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/492366.html
上一篇:C#如何計算給定字串中有多少字謎
