python - 更改熊猫数据框中随机选择的行的顺序
问题描述
我有一个看起来像的熊猫数据框:
c1 c2 c3 c4 result
a b c d 1
b c d a 1
a e d b 1
g a f c 1
但我想随机选择 50% 的行来交换顺序,并将结果列从 1 翻转为 0(如下所示):
c1 c2 c3 c4 result
a b c d 1
d a b c 0 (we swapped c3 and c4 with c1 and c2)
a e d b 1
f c g a 0 (we swapped c3 and c4 with c1 and c2)
实现此目的的惯用方法是什么?
解决方案
你有大致的想法。打乱 DataFrame 并将其分成两半。然后修改一半并重新加入。
import numpy as np
np.random.seed(410112)
dfs = np.array_split(df.sample(frac=1), 2) # Shuffle then split in 1/2
# On one half set result to 0 and swap the columns
dfs[1]['result'] = 0
dfs[1] = dfs[1].rename(columns={'c1': 'c2', 'c2': 'c1', 'c3': 'c4', 'c4': 'c3'})
# Join Back
df = pd.concat(dfs).sort_index()
c1 c2 c3 c4 result
0 a b c d 1
1 c b a d 0
2 e a b d 0
3 g a f c 1
推荐阅读
- python - 为什么 PySpark 在创建 SparkSession 时找不到 spark-submit?
- javascript - Array.flat() 与扩展运算符将多个数组扁平化为一个
- python - Django 过滤多对多
- python - 如何让用户根据我创建的字典输入电话号码并让他们以 XXX-XXX-XXXX 格式输入键或值?
- yii - 在 main.php 文件中使用 url::to()
- javascript - 仅向访问特定页面的用户显示内容?
- php - 在不同的选项卡中重用 Blade 模板
- 3d - KinematicBody.move_and_slide() 只能从实例调用
- linux-kernel - UIO驱动——理解实现逻辑
- c++ - C++ 在函数之间传递变量