繁体   English   中英

在 Pandas DataFrame 中匹配字符串的更有效方法

[英]More efficient way to match strings in a Pandas DataFrame

我有一列名为“Steuersatz”的 Pandas DataFrame。

此列由以下唯一字符串组成:

array(['19,00%', '0,00%', '5,00%', '4,64%', '4,04%', '4,10%', '1,63%', '3,55%',
       '1,14%', '0,96%', '11,31%', '12,35%', '10,45%', '11,00%', '12,99%',
       '10,83%', '6,82%', '11,50%', '16,00%', '3,30%', '4,00%', '4,16%',
       '4,15%', '10,38%', '11,43%', '11,58%'], dtype=object)

我正在尝试匹配模式,如果数字是 19,00 或末尾带有 00 的任何内容,它应该显示 19% 或仅显示该数字和 %

这是我为解决此问题所做的工作:

df["Steuersatz"] = df["Steuersatz"].map("{:,.2f}%".format)
df["Steuersatz"] = df["Steuersatz"].str.replace(".",",")
df['Steuersatz'] = df['Steuersatz'].str.replace("19,00%","19%")
df['Steuersatz'] = df['Steuersatz'].str.replace("0,00%","0%")
df['Steuersatz'] = df['Steuersatz'].str.replace("11,00%","11%")
df['Steuersatz'] = df['Steuersatz'].str.replace("5,00%","5%")
df['Steuersatz'] = df['Steuersatz'].str.replace("4,00%","4%")
df['Steuersatz'] = df['Steuersatz'].str.replace("16,00%","16%")

对我来说,这是低效的,我正在考虑自动执行此操作,而不是检查手动替换。

非常感谢您的意见

为什么不直接用空字符串替换,00呢? pd.Series.str.replace能够处理正则表达式(实际上默认是这样做的),因此可以执行部分​​匹配:

df['Steuersatz'] = df['Steuersatz'].str.replace(",00","")

这不仅从您的代码中删除了几行重复​​的行,而且还处理了新情况,例如 23,00%

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM