python - 如何从数据框列中提取特定项目并将它们用作剩余项目的标签?
问题描述
我有一个只有一列的数据框,我想提取某些项目并将它们变成一个单独的列,用作其他剩余项目的标签。这有点难以解释,例如我所拥有的是:
pd.DataFrame({'Fruits': ['Apple', 'Gala', 'Fuji', 'Grannysmith', 'Honeycrisp', 'Golden', 'pink', 'Orange', 'blood orange', 'Mandrin', 'Tangerine', 'Clementine', 'Banana', 'baby', 'manzano', 'burro']})
Fruits
0 Apple
1 Gala
2 Fuji
3 Grannysmith
4 Honeycrisp
5 Golden
6 pink
7 Orange
8 blood orange
9 Mandrin
10 Tangerine
11 Clementine
12 Banana
13 baby
14 manzano
15 burro
但我试图将其转换为:
Fruits Types
0 Apple Gala
1 Apple Fuji
2 Apple Grannysmith
3 Apple Honeycrisp
4 Apple Golden
5 Apple pink
6 Orange blood orange
7 Orange Mandrin
8 Orange Tangerine
9 Orange Clementine
10 Banana baby
11 Banana manzano
12 Banana burro
我如何将第一个数据框转换为第二个?我对此感到难过,尤其是当水果种类繁多以及它们各自的类型时。
解决方案
首先需要在列表中定义水果,然后通过where
withisin
为缺失值和前向填充创建具有重复水果的新列,然后在两列中删除相同的值boolean indexing
并最后设置新列名称:
L = ['Apple','Orange','Banana']
df['a'] = df['Fruits'].where(df['Fruits'].isin(L)).ffill()
df = df.loc[df['a'] != df['Fruits'], ['a','Fruits']]
df.columns = ['Fruits','Types']
print (df)
Fruits Types
1 Apple Gala
2 Apple Fuji
3 Apple Grannysmith
4 Apple Honeycrisp
5 Apple Golden
6 Apple pink
8 Orange blood orange
9 Orange Mandrin
10 Orange Tangerine
11 Orange Clementine
13 Banana baby
14 Banana manzano
15 Banana burro
推荐阅读
- javascript - 如何在类组件中使用前向引用?
- java - 如何访问Java jar 文件夹中的多个资源图像?
- go - 带有一个 go-exiftool 实例的循环挂在大量文件上
- javascript - appendBuffer() 不追加到 sourceBuffer
- javascript - 嵌套动态表单 Antd
- c++ - 无法在 Windows 上使用 mingw 将 sqlite3 与 c 连接
- spring-webclient - io.netty.channel.unix.Errors$NativeEceptionIoException: readAddress failed: Connection reset by peer 请求将被重试
- docker - 将 Docker 镜像推送到 Container Registry
- c - 使用套接字在客户端/服务器之间传输数据
- r - 数据框长到宽格式