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.apply
和Series.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 数据框列中计算日期时间差(以年、月等为单位)
如何将距离(以公里为单位)添加到以度和分钟为单位的位置坐标中,以获得 Java 中的新位置坐标?