Python 我如何加上一句;数据框中列中每个数字后的单位符号?
我正在接管一个在熊猫数据框中构建的项目,在这个数据框中有大量这种格式的测量:6x652x14 我需要进入并在具有此类测量数据的两个特定列中的每个数字后添加一个引号(“)英寸单位符号,上述示例中的预期结果如下所示6“x6”,52“x14”Python 我如何加上一句;数据框中列中每个数字后的单位符号?,python,pandas,string-formatting,number-formatting,units-of-measurement,Python,Pandas,String Formatting,Number Formatting,Units Of Measurement,我正在接管一个在熊猫数据框中构建的项目,在这个数据框中有大量这种格式的测量:6x652x14 我需要进入并在具有此类测量数据的两个特定列中的每个数字后添加一个引号(“)英寸单位符号,上述示例中的预期结果如下所示6“x6”,52“x14” 我如何简洁地编写一个代码段,在这两列中的每个数值后加上引号?另一个挑战是,这些列中还有其他测量数据,如单词“大”、“小”等。但我唯一关心的是在每个数字后加上英寸标记。下面是如何做string使用正则表达式替换单元(但根据您的使用情况,将它们拆分为单独的(数字)列
我如何简洁地编写一个代码段,在这两列中的每个数值后加上引号?另一个挑战是,这些列中还有其他测量数据,如单词“大”、“小”等。但我唯一关心的是在每个数字后加上英寸标记。下面是如何做string使用正则表达式替换单元(但根据您的使用情况,将它们拆分为单独的(数字)列(宽度、长度;请参见下文),可能更有意义): 而如果需要单独的(数字)长度、宽度列:
df[['length','width']] = df['measurements'].str.partition('x')[[0,2]].astype(int)
measurements length width
0 6x6 6 6
1 52x14 52 14
如果要进行任何计算(例如,df['area']=df.apply(lambda行:row['length']*row['width'],axis=1)),则单独的数字列更为简洁
然后,您可以通过以下方式添加自定义单位:
- 全局覆盖
pd.options.display.float_format='{.2f}'.format
(尽管您的维度是整数,而不是浮点)。这种攻击将覆盖所有dfs中所有浮点列的显示
- 或者在特定于列和数据帧的基础上,使用
- 或
- 在pandas本机实现此功能之前,正确的方法是使用
pint
包
注:
- 在
df[['length','width']]=df['measurements'].str.partition('x')[[0,2]].astype(int)
中,我们必须进行[[0,2]]
订阅以排除分区返回的“x”符号本身。我们还必须执行.astype(int)
将字符串/pandas'object'转换为int
您想进行任何数值操作(例如计算面积)还是将这些尺寸保持为字符串?根据您的使用情况,将它们拆分为单独的(数字)列可能更有意义width,length
。quote(“)是英寸单位符号。(和”是“英尺”的单位符号。想想吧……)
df[['length','width']] = df['measurements'].str.partition('x')[[0,2]].astype(int)
measurements length width
0 6x6 6 6
1 52x14 52 14