用Python将(美国)负数转换成欧洲人的负数

2024-04-25 14:15:01 发布

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

我从一个美国系统得到数据。我在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('(','-'))

我的期望:

"(100)" -> -100

"Nick (Jones)" ->"Nick **(Jones)**"

我得到的:

"(100)" -> -100

"Nick (Jones)" ->"Nick **-Jones**"

我需要一个代码,它可以对所有列的数字进行必要的转换,但不必考虑其他值。你知道吗


Tags: csv数据lambda字符串df系统数字nick
1条回答
网友
1楼 · 发布于 2024-04-25 14:15:01

^{}regex=True一起使用:

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

输出:

              0
0          -100
1  Nick (Jones)

正则表达式:

enter image description here

捕获一对括号(组#1)中任意数量的数字,并将-放在它前面(-组#1)。你知道吗

相关问题 更多 >