Python DataFrame,编辑列中的值

Python DataFrame, editing values in columns

目前我有一个如下所示的数据框:

name value position length
table 5.0 1234567 .25
chair 8.0 789012 5
couch 6.0 345678 5
bed 5.3 1901234 .05

我需要做的是首先编辑位置列,在十位后添加一个“+”,这样第一个数字应该是 12345+67

我想我必须先把位置上的每个数字分开,然后测量长度,最后加上“+”号,把它加到值的长度 - 2?

添加“+”号会导致它在 excel 中左对齐,所以我需要确保它右对齐。

我尝试使用 df = df.style.set_properties(subset=["position"], **{'text-align': 'right'}) 但这不起作用,因为我似乎需要具有相似名称的列。

还有什么方法可以完成这两个任务?

先谢谢你。

更新

我能够将位置列分成两列并添加带有“+”符号的第三列。然后我组合了所有 3 个新列并替换了位置列。最后使用以下内容删除了新列:

 df['col1']= df['position'].astype(str).str[:-2]
 df['col2'] = df['col'].str[:-2]
 df['col3'] = df['col'].str[-2:]
 df['col4'] = '+'
 df['position'] = df[['col1','col3','col2']].apply(lambda row: ''.join(row.values.astype(str)), axis=1)
 df = df.drop(["col", "col1", "col2", "col3", "col4"], axis=1)

我唯一需要做的就是能够将新值右对齐,因为在 excel 中,当我添加“+”符号时它会左对齐

Excel 默认情况下将数值右对齐,文本值左对齐。所以你将无法在 pandas 中进行更改,但是当你写入 excel 时,你可以在保存后使用类似 openpyxl 的东西修改对齐方式

如果您希望单元格保留其数值,另一种选择是将它们保留为数字,但将它们格式化为使用“+”显示。您可以通过将数字格式设置为“#+##”

来实现

see here for number format codes documentation