2
A
回答
2
使用倒置,即乘difference
的地方是mul
必要多的所有行:
cols = df.index.difference(['Revenue'])
df.loc[cols] = df.loc[cols].mul(-1)
樣品:
df = pd.DataFrame({'A':[1,2,3],
'B':[-4,5,6],
'C':[7,-8,9],
'D':[1,3,-5],
'E':[5,-3,6],
'F':[-7,4,3]},
index=['Revenue', 'Direct Cost','Manpower'])
print (df)
A B C D E F
Revenue 1 -4 7 1 5 -7
Direct Cost 2 5 -8 3 -3 4
Manpower 3 6 9 -5 6 3
cols = df.index.difference(['Revenue'])
df.loc[cols] = df.loc[cols].mul(-1)
print (df)
A B C D E F
Revenue 1 -4 7 1 5 -7
Direct Cost -2 -5 8 -3 3 -4
Manpower -3 -6 -9 5 -6 -3
另一種解決方案是創建Series
多個與to_series
+ map
:
s = (df.index.to_series() == 'Revenue').map({True:1, False:-1})
print (s)
Revenue 1
Direct Cost -1
Manpower -1
dtype: int64
df = df.mul(s, axis=0)
print (df)
A B C D E F
Revenue 1 -4 7 1 5 -7
Direct Cost -2 -5 8 -3 3 -4
Manpower -3 -6 -9 5 -6 -3
或者simplier使用numpy.where
用於轉換陣列通過掩模mul
:
df = df.mul(np.where(df.index == 'Revenue', 1, -1), axis=0)
print (df)
A B C D E F
Revenue 1 -4 7 1 5 -7
Direct Cost -2 -5 8 -3 3 -4
Manpower -3 -6 -9 5 -6 -3
1
使用@ jezrael的設置
df = pd.DataFrame({'A':[1,2,3],
'B':[-4,5,6],
'C':[7,-8,9],
'D':[1,3,-5],
'E':[5,-3,6],
'F':[-7,4,3]},
index=['Revenue', 'Direct Cost','Manpower'])
構建的-1
/+1
從布爾數組的數組。直接在底層values
陣列上操作。這非常快。
當索引值是Revenue
時,我們得到一個True
,否則False
。乘上2
,我們得到2
時等於Revenue
,否則0
。減去1
我們得到1
時Revenue
否則-1
。現在我們只需要將這個乘以values數組中的每一列。我們使用numpy廣播。爲了播出,我們把的-1
和1
我們的一維數組到的N×1個陣列[:, None]
。現在我們可以乘以每一列。
df.values[:] *= ((df.index.values == 'Revenue') * 2 - 1)[:, None]
df
A B C D E F
Revenue 1 -4 7 1 5 -7
Direct Cost -2 -5 8 -3 3 -4
Manpower -3 -6 -9 5 -6 -3
相關問題
- 1. 熊貓選擇未對齊的索引
- 2. Python - 熊貓索引
- 3. 熊貓得到索引系列的「索引」標籤
- 4. 熊貓列索引搜索?
- 5. 熊貓索引.loc錯誤「'標籤[2013_09_09]不在[索引]'」
- 6. 用熊貓分級索引
- 7. 熊貓摘要索引
- 8. 熊貓DataFrame.groupby包括索引
- 9. 熊貓索引isin方法
- 10. 熊貓上索引列
- 11. 熊貓索引編組後
- 12. 重置列索引熊貓?
- 13. 熊貓多級索引行
- 14. 熊貓索引跳過值
- 15. 熊貓:基於索引
- 16. 熊貓中的邏輯多元索引
- 17. 熊貓中的多重索引
- 18. 熊貓的熊貓(v0.8.0)的高級索引分配
- 19. 在熊貓中剝離索引值
- 20. 檢索熊貓數據框列索引
- 21. Python的熊貓 - 基於索引
- 22. Python的大熊貓to_json索引格式
- 23. 熊貓 - 索引類型值的更改
- 24. 如何獲得熊貓的行索引?
- 25. IndexError:索引超出熊貓的範圍
- 26. 對熊貓重複索引的操作
- 27. 在熊貓中選擇時忽略重複索引
- 28. 熊貓DataFrame索引的自動增量選項
- 29. 熊貓:調用df.loc []選自pd.datetime的索引
- 30. 熊貓非索引過濾器的索引過濾器
這個作品很好,謝謝!使用最後一個,因爲它是最簡單的 – idazuwaika
很高興可以幫助,最後是最好的;)美好的週末! – jezrael