gpt4 book ai didi

python - 在两个数据帧差异之间应用 Pandas 风格

转载 作者:行者123 更新时间:2023-12-01 08:14:04 25 4
gpt4 key购买 nike

我见过很多关于查找两个 pandas 数据帧之间差异的问题,但是在这里我尝试应用 Pandas.Style两个数据帧之间的差异。考虑到这两个示例数据帧,我希望将格式化程序应用于右[1,“B”]和右[“D”],因为它们与左值或新值不同:

left = pd.DataFrame([[1,1,1], [2,2,2]], columns=list("ABC"))
right = pd.DataFrame([[1,1,10], [2,5,10]], columns=list("ABD"))

这是我对 pandas 文档指导的格式化方法的想法

def formatter(s, new):
if s.name not in new.columns:
# column doesn't exist strike through entire thing
return "color: red; text-decoration: line-through;"

elif not s.equals(new[s.name]):
# apply per value a comparision of the elements
# for val in s:
# if val != right[val.index??]:
return "color: red; text-decoration: line-through;"

return "color: black;"

left.style.apply(formatter, args=(right))

我的想法是,之后我应该有一些像这样的 html 内容:

<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>A</th>
<th>B</th>
<th>C</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>1</td>
<td>1</td>
<td>1</td>
</tr>
<tr>
<th>1</th>
<td>2</td>
<td>2</td>
<td>2</td>
</tr>
</tbody>
</table>

<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>A</th>
<th>B</th>
<th>C</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>1</td>
<td>1</td>
<td style="color: red; text-decoration: line-through;">10</td>
</tr>
<tr>
<th>1</th>
<td>2</td>
<td style="color: red; text-decoration: line-through;">5</td>
<td style="color: red; text-decoration: line-through;">10</td>
</tr>
</tbody>
</table>

最佳答案

目前还不清楚你到底在哪里被卡住了,但代码并不遥远。

这可能就是您想要的:

left = pd.DataFrame([[1,1,1], [2,2,2]], columns=list("ABC"))
right = pd.DataFrame([[1,1,10], [2,5,10]], columns=list("ABD"))
def formatter(s, new):
if s.name not in new.columns:
# column doesn't exist strike through entire thing
return ["color: red; text-decoration: line-through;"]*len(s)

elif not s.equals(new[s.name]):
return ["color: red; text-decoration: line-through;" if v else "" for v in s == new[s.name]]

return ["color: black;"]*len(s)

left.style.apply(formatter, args=[right])

格式化程序方法现在返回与输入形状相同的数据(根据文档)。

正确的数据帧作为列表而不是元组传递。

还更改了每个值的比较,以在不同时返回颜色,否则保留默认样式。

关于python - 在两个数据帧差异之间应用 Pandas 风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55070199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com