gpt4 book ai didi

python - Pandas 数据框 : group by columnn and let duplicates of this columnn span several rows

转载 作者:太空宇宙 更新时间:2023-11-04 05:40:56 25 4
gpt4 key购买 nike

我有一个数据框,我想按其中一列对元素进行分组,如果该列具有相同的元素,我想将它们变成一个大元素(跨越几行)。最后我需要把它变成 latex 代码。

假设我有类似的东西

import pandas as pd
import random
table=pd.DataFrame({'a':[1,2,2,2,3,6,6],'b':[-6,-4,-3,-1,0,-1,-2],'c':random.sample(xrange(30), 7)},index=range(7))

给出数据框

|   | a | b | c |
-----------------
| 0 | 1 |-6 | 19|
-----------------
| 1 | 2 |-4 | 12|
-----------------
| 2 | 2 |-3 | 16|
-----------------
| 3 | 2 |-1 | 23|
-----------------
| 4 | 3 | 0 | 0 |
-----------------
| 5 | 4 |-1 | 21|
-----------------
| 6 | 4 |-2 | 15|

现在我想按列对它进行分组,例如(它是否将索引保留在最左边的列中并不重要):

| a | b | c |
-------------
| 1 |-6 | 19|
-------------
| |-4 | 12|
--------
| 2 |-3 | 16|
---------
| |-1 | 23|
-------------
| 3 | 0 | 0 |
-------------
| |-1 | 21|
---------
| 4 |-2 | 15|

某些元素跨越多行;希望以上解释了我的意思。我几乎通过使用得到这个

summary=pd.pivot_table(table, index=['a','b'],values=['c'])

但是这使它成为多索引(?),即

|   |   | c |
-------------
| a | b | |
-------------
| 1 |-6 | 19|
...

使用时出现问题

summary.to_latex()

获取 latex 代码。此外,对于多个值列,pd.pivot_table() 以新的方式对它们进行排序,而我想保留原始 DataFrame 中的顺序。 (请注意,如果有任何行具有相同的 a 和 b,这会更糟,但我的数据不是这种情况)

有没有办法将数据透视表的标题行展平为一个标题行,并保持值列的顺序?或者另一种方法可以完全做到这一点?我已经研究了一些其他选项,例如 pd.groupby() 但没有找到任何东西。

最佳答案

您似乎想要具有 multirow 效果的 latex 代码。 pivot_table 方法不会给你那个。事实上,我不认为 pd.DataFrame.to_latex() 会有那个 multirow/merged cell for latex。你需要自己写。

如果您不需要合并的单元格,而是有空白单元格也可以,您可以尝试类似的方法:

table=pd.DataFrame({'a':[1,2,2,2,3,6,6],'b':[-6,-4,-3,-1,0,-1,-2],'c':random.sample(xrange(30), 7)},index=range(7))

table.loc[table['a'].diff() == 0, 'a'] = ''

print table.to_latex(index=False)

#Output
\begin{tabular}{lrr}
\toprule
a & b & c \\
\midrule
1 & -6 & 23 \\
2 & -4 & 2 \\
& -3 & 20 \\
& -1 & 21 \\
3 & 0 & 5 \\
6 & -1 & 17 \\
& -2 & 22 \\
\bottomrule
\end{tabular}

关于python - Pandas 数据框 : group by columnn and let duplicates of this columnn span several rows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33934607/

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