由于比較原因,我正在一個專案中將 PDF 中的一些發票轉換為 .xlsx,但我遇到了一些麻煩,在轉換階段,程式將負信號與負數分開,所以我試圖做的是,使用正則運算式遍歷名稱列(減號信號所在的位置)并使用正則運算式匹配行,如果匹配,則將值列乘以 -1 或在數字前連接減號,但我嘗試了兩種方式,但它們都沒有改變值列。
這是資料框
date name value
519 25/02/2022 LOREM IPSUM 598,72
520 25/02/2022 LOREM IPSUM 656,56
523 25/02/2022 LOREM IPSUM - 220,32
524 25/02/2022 LOREM IPSUM - 339,76
我期望的結果是
date name value
519 25/02/2022 LOREM IPSUM 598,72
520 25/02/2022 LOREM IPSUM 656,56
523 25/02/2022 LOREM IPSUM - -220,32
524 25/02/2022 LOREM IPSUM - -339,76
我嘗試使用
r1 = re.compile(r"- $|-$")
for item in diference["name"]:
if r1.match(item):
diference["value"] = diference["value"]*(-1)
和
r1 = re.compile(r"- $|-$")
for item in diference["name"]:
if r1.match(item):
diference["value"] = "-" diference["value"]
但正如我所說,他們都沒有給我一個錯誤,也沒有改變什么
uj5u.com熱心網友回復:
您可以使用
df['value'] = pd.to_numeric(df['value'].str.replace(',', '.'))
df.loc[df['name'].str.endswith('-'), 'value'] *= -1
細節
df['value'] = pd.to_numeric(df['value'].str.replace(',', '.'))將字串數字轉換為數字df.loc[df['name'].str.endswith('-'), 'value'] *= -1將列以 a 結尾的value列中的所有值乘以 -1 。name-
查看 Pandas 測驗:
import pandas as pd
df= pd.DataFrame({'name': ['LOREM IPSUM ', 'LOREM IPSUM -'], 'value':['598,72', '339,76']})
df['value'] = pd.to_numeric(df['value'].str.replace(',', '.'))
df.loc[df['name'].str.endswith('-'), 'value'] *= -1
輸出:
>>> df
name value
0 LOREM IPSUM 598.72
1 LOREM IPSUM - -339.76
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/488313.html
上一篇:For回圈的計數在某處丟失
