使用Python熊猫将(美国)负数转换为-欧洲人

Att*_*zma 0 python dataframe pandas

我正在从美国系统获取数据。我在CSV中得到的数字是字符串“(100)”,我必须将其转换为-100整数。我在数据框中有N个列,我必须对所有列都这样做。

我现在正在做的是将所有括号替换为空和负值符号。这不是最佳解决方案,因为它正在转换数据帧中的所有给定值。

import pandas as pd

df=pd.read_csv('American.csv',  thousands=r',')

df=df.apply(lambda z: z.astype(str).str.replace(')',''))
df=df.apply(lambda z: z.astype(str).str.replace('(','-'))
Run Code Online (Sandbox Code Playgroud)

我的期望:

"(100)" -> -100

"Nick (Jones)" ->"Nick **(Jones)**"
Run Code Online (Sandbox Code Playgroud)

我得到的是:

"(100)" -> -100

"Nick (Jones)" ->"Nick **-Jones**"
Run Code Online (Sandbox Code Playgroud)

我需要一个代码,用所有列的数字进行必要的转换,但又不打扰其他值。

Chr*_*ris 5

使用pandas.DataFrame.replaceregex=True

df = pd.DataFrame(["(100)", "Nick (Jones)"])
new_df = df.replace('\((\d+)\)', '-\\1',regex=True)
print(new_df)
Run Code Online (Sandbox Code Playgroud)

输出:

              0
0          -100
1  Nick (Jones)
Run Code Online (Sandbox Code Playgroud)

正则表达式:

在此处输入图片说明

在方括号对(组#1)中捕获任意位数,并将其放在方括号(组-1)中。