Python将单位添加到数据框

Posted

技术标签:

【中文标题】Python将单位添加到数据框【英文标题】:Python Add units to dataframe 【发布时间】:2021-10-02 22:05:54 【问题描述】:

我正在尝试将单位添加到数据框中,但无法绕过有空格的行。这是我所拥有的:

Index |   Inch   |  mm  |  ft
______________________________
 0    |         |   4   |   7
______________________________
 1    |    2     |      |   8
______________________________
 2    |    3     |   6  |   9

这是我尝试过的:

    if numbers.find('\d') > -1:
            return str(round_string_float(numbers))+' in'

但这不会使用正则表达式来查找数字。这是我想要得到的:

Index |   Inch   |  mm    |    ft
______________________________________
 0    |          |  4 mm  |   7 ft
______________________________________
 1    |   2 in   |        |   8 ft
______________________________________
 2    |   3 in   |  6 mm  |   9 ft

【问题讨论】:

【参考方案1】:

你可以这样做:

df['Inch'] = df['Inch'].fillna('').astype(str) + ' in'

添加“in”,然后:

df.loc[df['Inch'] == ' in', 'Inch'] = ''

去掉没有数字的行。 以此类推所有列。

【讨论】:

第一个确实添加了“in”,但它添加到空白以及列中带有数字的行 @ShawnJamal 你是否也像我写的那样写了第二行来删除这些单元格? 没关系!我忘记将列从“英寸”重命名为我的 DF 中的列名。它就像一个魅力。感谢您的帮助【参考方案2】:

使用pandas.DataFrame.applySeries.str.replace 的一种方式:

new_df = df.apply(lambda x: x.str.replace("(\d+)", "\\1 %s" % x.name, regex=True))
print(new_df)

输出:

         Inch    mm    ft
Index                    
0              4 mm  7 ft
1      2 Inch        8 ft
2      3 Inch  6 mm  9 ft

【讨论】:

不幸的是,列名比问题复杂一些,但感谢您的尝试。

以上是关于Python将单位添加到数据框的主要内容,如果未能解决你的问题,请参考以下文章

如何将数字数据映射到 Pandas 数据框中的类别/箱中

将日期添加到数据框中的日期

在新的 pandas 数据框列中计算日期时间差(以年、月等为单位)

如何将距离(以公里为单位)添加到以度和分钟为单位的位置坐标中,以获得 Java 中的新位置坐标?

使用组合框更改值单位时如何更新/转换数字文本框值?基于当前单位的值标准化?

ElementUI给表格加上输入框和单位