panda将具有相同值的行单元格合并为一个单元格



我有一个熊猫数据帧FruitsInfo,如图所示:

====================================
|  Name  |  Color  |  Size  |  No. |
====================================
| Apple  |  Red    | Medium |  20  |
------------------------------------
| Apple  | Green   | Small  |  10  |
------------------------------------
| Apple  | Yellow  | Small  |   5  |
------------------------------------
| Grapes | Green   | Small  |  50  |
------------------------------------
| Grapes | Purple  | Small  |  60  |
------------------------------------
| Grapes | Black   | Medium |  80  |
------------------------------------
| Mango  | Yellow  | Medium |  30  |
------------------------------------
| Mango  | Green   | Small  |  25  |
------------------------------------
| Mango  | Orange  | Small  |  20  |
====================================

我只想合并Name列,如下所示。如何使用熊猫获得此结果?

====================================
|  Name  |  Color  |  Size  |  No. |
====================================
| Apple  |  Red    | Medium |  20  |
|        ---------------------------
|        | Green   | Small  |  10  |
|        ---------------------------
|        | Yellow  | Small  |   5  |
------------------------------------
| Grapes | Green   | Small  |  50  |
|        ---------------------------
|        | Purple  | Small  |  60  |
|        ---------------------------
|        | Black   | Medium |  80  |
------------------------------------
| Mango  | Yellow  | Medium |  30  |
|        ---------------------------
|        | Green   | Small  |  25  |
|        ---------------------------
|        | Orange  | Small  |  20  |
====================================

我真的不明白你所说的分组是什么意思,但你似乎得到了一个多索引数据帧,它以这样的方式打印出来,所以你可以做以下事情:

import pandas as pd
import io
csv = io.StringIO('''|  Name  |  Color  |  Size  |  No. |
| Apple  |  Red    | Medium |  20  |
| Apple  | Green   | Small  |  10  |
| Apple  | Yellow  | Small  |   5  |
| Grapes | Green   | Small  |  50  |
| Grapes | Purple  | Small  |  60  |
| Grapes | Black   | Medium |  80  |
| Mango  | Yellow  | Medium |  30  |
| Mango  | Green   | Small  |  25  |
| Mango  | Orange  | Small  |  20  |''')
df = pd.read_csv(csv,sep=r's*|s*').iloc[:,1:-1]
>>>df.set_index(['Name','Color'])
Size    No.
Name    Color       
Apple   Red     Medium  20
Green   Small   10
Yellow  Small   5
Grapes  Green   Small   50
Purple  Small   60
Black   Medium  80
Mango   Yellow  Medium  30
Green   Small   25
Orange  Small   20

最新更新