我有一个熊猫数据帧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