python - 如何在 Python 的列表中打乱数据框块(不同大小)?
问题描述
下面是我想要实现的一些虚拟代码,我的问题在最后。我想在 Python 的列表中打乱数据框块(不同大小)。谢谢。
设置一个虚拟字典:
dummy = {"ID":[1,2,3,4,5,6,7,8,9,10],
"Alphabet":["A","B","C","D","E","F","G","H","I","J"],
"Fruit":["apple","banana","coconut","date","elephant apple","feijoa","guava","honeydew","ita palm","jack fruit"]}
将字典转换为数据框:
dummy_df = pd.DataFrame(dummy)
创建具有所需大小的数据框块:
blocksize = [1,2,3,4]
blocks = []
i = 0
for j in range(len(blocksize)):
a = blocksize[j]
blocks.append(dummy_df[i:i+a])
i += a
blocks
下面是“块”的输出。它是 4 块数据帧,列表中大小为 1-4 行:
[ ID Alphabet Fruit
0 1 A apple,
ID Alphabet Fruit
1 2 B banana
2 3 C coconut,
ID Alphabet Fruit
3 4 D date
4 5 E elephant apple
5 6 F feijoa,
ID Alphabet Fruit
6 7 G guava
7 8 H honeydew
8 9 I ita palm
9 10 J jack fruit]
我在上述之后被卡住了。
我尝试了很多不同的东西,但一直出错。我想打乱列表中的这些数据框块,然后将它们组合回一个数据框。下面是一个洗牌输出的例子。请问我该怎么做?
理想输出示例:
ID Alphabet Fruit
1 2 B banana
2 3 C coconut
0 1 A apple
6 7 G guava
7 8 H honeydew
8 9 I ita palm
9 10 J jack fruit
3 4 D date
4 5 E elephant apple
5 6 F feijoa
解决方案
获得列表后,您可以使用random.shuffle
. 之后,您可以创建一个新的空数据框,然后从(混洗)列表中附加每个块。
试试这个代码:
import pandas as pd
import random
dummy = {"ID":[1,2,3,4,5,6,7,8,9,10],
"Alphabet":["A","B","C","D","E","F","G","H","I","J"],
"Fruit":["apple","banana","coconut","date","elephant apple","feijoa","guava","honeydew","ita palm","jack fruit"]}
dummy_df = pd.DataFrame(dummy)
blocksize = [1,2,3,4]
blocks = []
i = 0
for j in range(len(blocksize)):
a = blocksize[j]
blocks.append(dummy_df[i:i+a])
i += a
random.shuffle(blocks) # shuffle blocks in list
dfs = pd.DataFrame() # new empty dataframe
for b in blocks: # each block
dfs = dfs.append(b) # add to dataframe
print(dfs)
输出
ID Alphabet Fruit
3 4 D date
4 5 E elephant apple
5 6 F feijoa
1 2 B banana
2 3 C coconut
6 7 G guava
7 8 H honeydew
8 9 I ita palm
9 10 J jack fruit
0 1 A apple
推荐阅读
- java - 如何将kafka connect与java集成,使其可以读取csv文件并将数据转发给消费者?
- python - 在 django 的 UpdateVIEW 中编码
- javascript - 多列旋转木马反应
- laravel - 如何在 voyager :::not connected to model 中创建视图
- c++ - 将 (-1) 添加到 std::set 迭代器
- python - 在 debian 容器中查找 python 站点包目录?
- node.js - appInsights.setup().start(); 返回错误
- swiftui - 有没有办法退出 SpriteView 游戏场景并返回 SwiftUI homeView?
- php - 我无法在数据库 Stripe Laravel 8 上收到付款
- typescript - 连接具有相同值的键对象或如果值不同则创建新对象