仅提取 pandas 列中的百分比值

Extracting only the percent value in a column in pandas

我有一个包含字符串的列,最后包含一个百分比,例如 XX: (+2, 30%); (-5, 20%); (+17, 50%) 。 我需要为每个这样的字符串提取最高的 % 值并在整个列上执行此操作。 任何建议将不胜感激! 谢谢

此代码returns具有百分比的列中的最大值

import pandas as pd
import numpy as np
data = [['2.3%', 1],['5.3%', 3]]
data  = pd.DataFrame(data)
first_column = data.iloc[:, 0]
percent_list = []
for val in first_column:
    percent_list.append(float(val[:-1]))
print(percent_list[np.argmax(percent_list)])

据我了解,XX 列中的每个单元格都是包含一些百分比的单元格。我已经包含了一个我使用过的小测试 DataFrame:

import pandas as pd
import re

df = pd.DataFrame({"XX":["(+2, 30%), (-5, 20%), (+17, 50%)","(+2, 70%), (-5, 20%), (+17, 50%)", ""]})

pattern = re.compile("([0-9\.]+)%")
df["XX"].apply(lambda x: max(pattern.findall(x), default=-1))

输出

0    50
1    70