gpt4 book ai didi

python - 随机化/改组 Pandas 数据框中的行

转载 作者:太空宇宙 更新时间:2023-11-03 15:12:37 26 4
gpt4 key购买 nike

我目前正在尝试找到一种方法来按行随机化数据框中的项目。我在 pandas ( shuffling/permutating a DataFrame in pandas ) 中发现了这个关于 shuffling/permutation column-wise 的线程,但是为了我的目的,有没有办法做类似的事情

import pandas as pd

data = {'day': ['Mon', 'Tues', 'Wed', 'Thurs', 'Fri'],
'color': ['Blue', 'Red', 'Green', 'Yellow', 'Black'],
'Number': [11, 8, 10, 15, 11]}

dataframe = pd.DataFrame(data)
Number color day
0 11 Blue Mon
1 8 Red Tues
2 10 Green Wed
3 15 Yellow Thurs
4 11 Black Fri

然后将行随机化成类似的

    Number   color    day
0 Mon Blue 11
1 Red Tues 8
2 10 Wed Green
3 15 Yellow Thurs
4 Black 11 Fri

如果为了这样做,列标题将不得不消失或类似的东西,我理解。

编辑:因此,在我发布的线程中,部分代码引用了“轴”参数。我知道 axis = 0 指的是列, axis =1 指的是行。我尝试使用代码并将轴更改为 1,它似乎仅在表格由所有数字组成时才随机化我的数据帧(而不是字符串列表或两者的组合)。

也就是说,我应该考虑不使用数据框吗?如果我的数据仅包含字符串或整数和字符串的组合,是否有更好的二维结构可以使行和列随机化?

最佳答案

编辑:我误解了这个问题,它只是随机排列行而不是所有表格(对吗?)

我认为使用数据框没有多大意义,因为列名变得无用。所以你可以只使用 2D numpy 数组:

In [1]: A
Out[1]:
array([[11, 'Blue', 'Mon'],
[8, 'Red', 'Tues'],
[10, 'Green', 'Wed'],
[15, 'Yellow', 'Thurs'],
[11, 'Black', 'Fri']], dtype=object)

In [2]: _ = [np.random.shuffle(i) for i in A] # shuffle in-place, so return None

In [3]: A
Out[3]:
array([['Mon', 11, 'Blue'],
[8, 'Tues', 'Red'],
['Wed', 10, 'Green'],
['Thurs', 15, 'Yellow'],
[11, 'Black', 'Fri']], dtype=object)

如果你想保留数据框:

In [4]: pd.DataFrame(A, columns=data.columns)
Out[4]:
Number color day
0 Mon 11 Blue
1 8 Tues Red
2 Wed 10 Green
3 Thurs 15 Yellow
4 11 Black Fri

这里是一个随机排列行和列的函数:

import numpy as np
import pandas as pd

def shuffle(df):
col = df.columns
val = df.values
shape = val.shape
val_flat = val.flatten()
np.random.shuffle(val_flat)
return pd.DataFrame(val_flat.reshape(shape),columns=col)

In [2]: data
Out[2]:
Number color day
0 11 Blue Mon
1 8 Red Tues
2 10 Green Wed
3 15 Yellow Thurs
4 11 Black Fri

In [3]: shuffle(data)
Out[3]:
Number color day
0 Fri Wed Yellow
1 Thurs Black Red
2 Green Blue 11
3 11 8 10
4 Mon Tues 15

希望对你有帮助

关于python - 随机化/改组 Pandas 数据框中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24701217/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com