python - 如何根据条件交换 2 行中的选定数据
问题描述
我是 Python 新手。
假设我有 DataFrame,并且想要切换具有相似 id 的所有行的选定数据。
例如:
| id | Gender | Name | Hobby | Food |
+------+--------+---------+------------+-----------+
| 1111 | Male | Robert | Swim | Ice-cream |
| 1112 | Female | Natasha | Football | Pizza |
| 1111 | Female | Misa | Volleyball | Pasta |
| 1112 | Male | Rick | Sleep | Hamburger |
| 1113 | Male | Rondo | Read | Rice |
+------+--------+---------+------------+-----------+
预期输出:
+------+--------+---------+------------+-----------+
| id | Gender | Name | Hobby | Food |
+------+--------+---------+------------+-----------+
| 1111 | Male | Robert | Volleyball | Pasta |
| 1112 | Female | Natasha | Sleep | Hamburger |
| 1111 | Female | Misa | Swim | Ice-cream |
| 1112 | Male | Rick | Football | Pizza |
| 1113 | Male | Rondo | Read | Rice |
+------+--------+---------+------------+-----------+
所以我想做的是在具有相同 id 的人之间切换数据(在这个例子中只有爱好和食物),但名字和性别保持不变。
所以基本上,在第一行,id 1111,性别是男性,名字是罗伯特 - 爱好是排球,食物是意大利面。在第二行,id 1111,性别是女性,名字是 Misa - 爱好是游泳,食物是冰淇淋。并为 id 1112 做同样的事情。目前我没有任何想法,除了编写一些循环然后使用空 DataFramme 来追加和切换。谢谢你们!!
解决方案
我没有交换其他列,而是选择交换Name
和Gender
:
def swap(x):
x[['Gender','Name']] = x[['Gender','Name']].values[::-1]
return x
df.groupby('id').apply(swap)
输出:
id Gender Name Hobby Food
0 1111 Female Misa Swim Icecream
1 1112 Male Rick Football Pizza
2 1111 Male Robert Volleyball Pasta
3 1112 Female Natasha Sleep Hamburger
4 1113 Male Rondo Read Rice
或者,如果您坚持正确的顺序,则交换其他列:
def swap2(x):
x[['Hobby','Food']] = x[['Hobby','Food']].values[::-1]
return x
print(df.groupby('id').apply(swap2))
输出:
id Gender Name Hobby Food
0 1111 Male Robert Volleyball Pasta
1 1112 Female Natasha Sleep Hamburger
2 1111 Female Misa Swim Icecream
3 1112 Male Rick Football Pizza
4 1113 Male Rondo Read Rice
推荐阅读
- php - 如何在多个环境(开发、阶段、生产)上保持身份验证令牌同步(php)
- sql - 如何从数据库中的表中获取数据类型,约束(pk,fk)并保存
- twilio - 有什么方法可以在不将应用程序暴露在互联网(webhook)的情况下接收 Whatsapp 消息?
- reactjs - React/JSX/NextJS 中有没有办法在单击 gif 时自动全屏打开视频?
- bash - 用动态bash脚本变量替换所有文件中包含冒号、斜杠和撇号的字符串?
- html - 不知道 > div 做了什么
- amazon-web-services - 从一台域服务器访问多个功能/API
- php - Docker ClassLoader 异常中的 Laravel Lumen
- javascript - 使用reduce将一系列日期映射到时隙
- php - $_POST 值的 WP ajax 响应为空