在熊猫中洗牌但有序

假设我有一个包含三列的数据框:年龄、性别和国家/地区。


我想随机打乱这些数据,但要根据性别以有序的方式打乱。有 n 个男性和 m 个女性,其中 n 可以小于、大于或等于 m。洗牌应该以这样一种方式发生,即我们得到以下 8 人规模的结果:


male, female, male, female, male, female, female, female,....(如果有更多的女性:m > n) male, female, male, female, male, male, male, male(如果有more males: n > m) male, female, male, female, male, female, male, female, male, female (如果男女相等:n = m)


df = pd.DataFrame({'Age': [10, 20, 30, 40, 50, 60, 70, 80],

                   'Gender': ["Male", "Male", "Male", "Female", "Female", "Male", "Female", "Female"], 

'Country': ["US", "UK", "China", "Canada", "US", "UK", "China", "Brazil"]})


幕布斯6054654
浏览 122回答 2
2回答

墨色风雨

首先添加每个组内的序列号:df['Order'] = df.groupby('Gender').cumcount()然后排序:df.sort_values('Order')它给你:   Age  Gender Country  Order0   10    Male      US      03   40  Female  Canada      01   20    Male      UK      14   50  Female      US      12   30    Male   China      26   70  Female   China      25   60    Male      UK      37   80  Female  Brazil      3如果您想随机播放,请在一开始就这样做,例如df = df.sample(frac=1),请参阅:Shuffle DataFrame rows

一只萌萌小番薯

使用 a 创建两个新的数据帧,'Sort_Column'并使数据帧为df_male偶数值和数据帧为df_female奇数值。然后,使用pd.concat将它们重新组合在一起并.sort_values()在'Sort_Column'.df = pd.DataFrame({'Age': [10, 20, 30, 40, 50, 60, 70, 80],                   'Gender': ["Male", "Male", "Male", "Female", "Female", "Male", "Female", "Female"], 'Country': ["US", "UK", "China", "Canada", "US", "UK", "China", "Brazil"]})df['Sort_Column'] = 0df_male = df.loc[df['Gender'] == 'Male'].reset_index(drop=True)df_male['Sort_Column'] = df_male['Sort_Column'] + df_male.index*2df_female = df1.loc[df1['Gender'] == 'Female'].reset_index(drop=True)df_female['Sort_Column'] = df_female['Sort_Column'] + df_female.index*2 + 1df_sorted=pd.concat([df_male, df_female]).sort_values('Sort_Column').drop('Sort_Column', axis=1).reset_index(drop=True)df_sorted输出:    Age Gender  Country0   10  Male    US1   40  Female  Canada2   20  Male    UK3   50  Female  US4   30  Male    China5   70  Female  China6   60  Male    UK7   80  Female  Brazil
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python