【问题标题】:Python DataFrame, editing values in columnsPython DataFrame,在列中编辑值
【发布时间】:2021-10-15 19:59:43
【问题描述】:

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

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 中,当我添加“+”号时它会向左对齐

【问题讨论】:

  • tens place 是什么? dtype 是什么?整数还是字符串?
  • 十位是位置列下数字的位值,所以第一个值1234567,然后6在十位,符号将在5和6之间。所以下一个值I需要在 0 和 1 之间插入符号。dtype 是 int,但添加“+”符号会将其更改为我相信的字符串?

标签: python excel dataframe openpyxl excel-tables


【解决方案1】:

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

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

see here for number format codes documentation

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多