import pandas as pd # 创建示例 DataFrame df = pd.DataFrame({ 'A': [1, 2, 3, 4], 'B': [1, 2, 5, 4], }) # 标记不一致的单元格为橙色 def highlight_diff(x): if x['A'] != x['B']: return 'background-color: orange' else: return '' df.style.applymap(highlight_diff, subset=pd.IndexSlice[:, ['A', 'B']]) 'int' object is not subscriptable
时间: 2024-01-02 19:03:06 浏览: 87
这个问题通常是由于 DataFrame 中存在整型数据(int)而非字符串(string)或对象(object)类型的数据引起的。您可以将 DataFrame 中的整型数据转换为字符串类型,例如:
```python
import pandas as pd
# 创建示例 DataFrame
df = pd.DataFrame({
'A': [1, 2, 3, 4],
'B': [1, 2, 5, 4],
})
# 转换为字符串类型
df = df.astype(str)
# 标记不一致的单元格为橙色
def highlight_diff(x):
if x['A'] != x['B']:
return 'background-color: orange'
else:
return ''
df.style.applymap(highlight_diff, subset=pd.IndexSlice[:, ['A', 'B']])
```
这段代码中,我们首先创建了一个示例 DataFrame,然后使用 `astype` 方法将 DataFrame 中的所有数据类型转换为字符串类型。最后,我们使用 `applymap` 方法将函数应用到 DataFrame 的所有单元格中,并指定只对列名为 `A` 和 `B` 的列进行处理。
如果您需要将标记后的结果输出到 HTML 文件或者 Jupyter Notebook 中,可以使用 `to_html` 或者 `render` 方法:
```python
# 输出到 HTML 文件
with open('output.html', 'w') as f:
f.write(df.style.applymap(highlight_diff, subset=pd.IndexSlice[:, ['A', 'B']]).render())
# 在 Jupyter Notebook 中显示
df.style.applymap(highlight_diff, subset=pd.IndexSlice[:, ['A', 'B']]).render()
```
阅读全文