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 的东西修改对齐方式
如果您希望单元格保留其数值,另一种选择是将它们保留为数字,但将它们格式化为使用“+”显示。您可以通过将数字格式设置为“#+##”
来实现
目前我有一个如下所示的数据框:
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 的东西修改对齐方式
如果您希望单元格保留其数值,另一种选择是将它们保留为数字,但将它们格式化为使用“+”显示。您可以通过将数字格式设置为“#+##”
来实现