"改变Pandas中特定行的符号"

2024-06-13 09:33:12 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的第一篇文章,所以我试着用正确的格式来写。我有两列文本、值和索引日期。在

Date  Zweck  Betrag                                 
2014-09-26 00:00:00   Gehalt    22.0  
2014-09-26 01:00:00     REWE     1.0  
2014-09-26 02:00:00    Edeka    76.0  
2014-09-26 03:00:00     Bike    51.0  
2014-09-26 04:00:00      ING    64.0  
2014-09-26 05:00:00  Allianz    93.0  
2014-09-26 06:00:00     Bahn     8.0  
2014-09-26 07:00:00  Kaufhof    33.0  
2014-09-26 08:00:00       CA     6.0  
2014-09-26 09:00:00    Shell    55.0  

如果文本不是Salary(所以是负值),我想做的是在每一行中翻转符号。我用这种方法试过了,但没用:

^{pr2}$

Tags: 文本date格式文章caingbikebahn
1条回答
网友
1楼 · 发布于 2024-06-13 09:33:12

选项1
你不必用循环迭代。Pandas的loc为您向量化这个替换项。在

df.loc[df.Zweck != 'Gehalt', 'Betrag'] *= -1

^{pr2}$

任务到位,便宜,快捷。在


选项2
或者,您可以使用np.where,这将为您提供一个新的系列,您可以将其分配回。在

df['Betrag'] = np.where(df.Zweck != 'Gehalt', df.Betrag * -1, df.Betrag)

^{pr2}$


选项3 另一个是mask/where-

df.Betrag = df.Betrag.where(df.Zweck != 'Gehalt', df.Betrag)

或者

df.Betrag = df.Betrag.mask(df.Zweck == 'Gehalt', df.Betrag)

或者,您可以使用df.update,这样就不需要再赋值了。在

df.update(df.Betrag.where(df.Zweck != 'Gehalt', df.Betrag))

^{pr2}$

相关问题 更多 >