程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了数据框从一列分成三列大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决数据框从一列分成三列?

开发过程中遇到数据框从一列分成三列的问题如何解决?下面主要结合日常开发的经验,给出你关于数据框从一列分成三列的解决方法建议,希望对你解决数据框从一列分成三列有所启发或帮助;

想要将 'a' 中的键 ['11 - 18 [1.3'] 值拆分为 'a1': ['11','12','13','14','8'] 'a2': ['18','17','18','16','48'] 'a3': ['1.3','2.8','3.3','4.7','5.4']

此格式的参正则表达式

regexr.com/61kpi

regexr.com/61kpo

数据

x = {'a': ['11 - 18 [1.3]','12 - 17 [2.8]','13 - 18 [3.3]','14 - 16 [4.7]','8 - 48 [5.3]'],'b': [13.0,11.0,12.0,14.0,15.0]}

打印数据

              a     b
0  11 - 18 [1.3]  13.0
1  12 - 17 [2.8]  11.0
2  13 - 18 [3.3]  12.0
3  14 - 16 [4.7]  14.0
4   8 - 48 [5.3]  15.0

预期结果

   a1 a2   a3     b
0  11  18  1.3  13.0
1  12  17  2.8  11.0
2  13  18  3.3  12.0
3  14  16  4.7  14.0
4   8  48  5.3  15.0

预期输出数据

y = {'a1': ['11','8'],'a2': ['18','48'],'a3': ['1.3','5.3'],21.0,13.0,17.0]}

解决方法

您可以使用正则表达式将文本拆分为新列,然后将字符串转换为数字,例如:

x = {'a': ['11 - 18 [1.3]','12 - 17 [2.8]','13 - 18 [3.3]','14 - 16 [4.7]','8 - 48 [5.3]'],'b': [13.0,11.0,12.0,14.0,15.0]}

df = pd.DataFrame(X)
df[['a1','a2']] = df['a'].str.split(' - ',expand=TruE)
df[['a2','a3']] = df['a2'].str.split(' \[',expand=TruE)
df['a3'] = df['a3'].str.replace(']','')
df[['a1','a2','a3']] = df[['a1','a3']].astype(float)

获得:

               a     b    a1    a2   a3
0  11 - 18 [1.3]  13.0  11.0  18.0  1.3
1  12 - 17 [2.8]  11.0  12.0  17.0  2.8
2  13 - 18 [3.3]  12.0  13.0  18.0  3.3
3  14 - 16 [4.7]  14.0  14.0  16.0  4.7
4   8 - 48 [5.3]  15.0   8.0  48.0  5.3

,

正则表达式将是实现这一目标的最佳方式:

.str.extract 与命名捕获组一起使用:

pattern = r"(?P<a1>\d+) - (?P<a2>\d+) \[(?P<a3>\d\.\d)\]"

new_df = df["a"].str.extract(pattern).join(df["b"])

print(new_df)
   a1  a2   a3     b
0  11  18  1.3  13.0
1  12  17  2.8  11.0
2  13  18  3.3  12.0
3  14  16  4.7  14.0
4   8  48  5.3  15.0

使用 .str.extractall 获取所有数字,以防数据框中的模式不一致:

new_df = (
    df["a"].str.extractall(r"(\d+\.?\d*)")[0]
    .unstack()
    .rename(columns=lambda c: "a{}".format(c+1))
    .join(df["b"])
)

print(new_df)
   a1  a2   a3     b
0  11  18  1.3  13.0
1  12  17  2.8  11.0
2  13  18  3.3  12.0
3  14  16  4.7  14.0
4   8  48  5.3  15.0

大佬总结

以上是大佬教程为你收集整理的数据框从一列分成三列全部内容,希望文章能够帮你解决数据框从一列分成三列所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。