python - Pandas 在第一个 % 符号和第二个字母上拆分列

标签 python pandas

我们有以下数据框

# raw_df
print(raw_df.to_dict())

{'Edge': {1: '-1.9%-2.2%', 2: '+5.8%-9.4%', 3: '+3.5%-7.2%'}, 'Grade': {1: 'D+D', 2: 'BF', 3: 'B-F'}}

enter image description here

我们正在尝试将这 2 列拆分为 4 列。 Edge 列应在第一个 % 之后拆分,Grade 列应在第二个大写字母出现之前拆分。输出应如下所示:

output_df

edge_1 edge_2 grade_1 grade_2
 -1.9%  -2.2%      D+       D
 +5.8%  -9.4%       B       F
 +3.5%  -7.2%      B-       F

我们有 raw_df[['t1_grade', 't2_grade']] = raw_df['Grade'].str.extractall(r'([A-Z])').unstack()拆分 Grade 列,但是 + 和 - 被删除在这里,这是一个问题。我们不确定如何在第一个 % 出现后拆分 Edge 列。

最佳答案

我们可以使用str.extract,如下所示:

df["edge_1"] = df["Edge"].str.extract(r'^([+-]?\d+(?:\.\d+)?%)')
df["edge_2"] = df["Edge"].str.extract(r'([+-]?\d+(?:\.\d+)?%)$')
df["grade_1"] = df["Grade"].str.extract(r'^([A-Z][+-]?)')
df["grade_2"] = df["Grade"].str.extract(r'([A-Z][+-]?)$')

这里的策略是使用正则表达式从当前的两个列中提取第一个/最后一个百分比/成绩。

关于python - Pandas 在第一个 % 符号和第二个字母上拆分列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68570458/

相关文章:

python - 迭代时无法修改 Pandas DataFrame

python - 如何 append 多个 CSV 文件并创建多索引数据框

python - 列标题前缀上的 GroupBy 列

Python:基于重叠项对DataFrame进行聚类

python - Django 原始查询总数

python - 产生 OverflowError 的十进制数的幂

python - Pandas to_numpy() 生成列表数组。如何从中获取二维 numpy 数组?

python - 从 pandas dataframe 到 xlwings 的 excel?

python - 如何正确设置 pandas.Dataframe 中特定单元格的值?

python - 列表理解与过滤与删除