pandas 如何创建一个循环以获取一个现有的df,并创建一个随机化的新df

ehxuflar  于 2022-12-09  发布在  其他
关注(0)|答案(3)|浏览(167)

我试图构建一个工具,它可以在维护相同元素的同时对数据集进行置乱。
我想让它遍历每一列,选择一个随机值,并将其粘贴到一个新的df中。
我已经设法使它与下面的代码工作,虽然24列的代码是相当重复的,我知道一个循环应该能够做到这一点快得多,我只是没有能够使它工作。

import pandas as pd
import random

lst1 = df['1'].to_list()
lst2 = df['2'].to_list()
lst3 = df['3'].to_list()
lst4 = df['4'].to_list()
lst5 = df['5'].to_list()
lst6 = df['6'].to_list()

df_new = pd.DataFrame()

df_new['1'] = random.choices(lst1, k=2000)
df_new['2'] = random.choices(lst2, k=2000)
df_new['3'] = random.choices(lst3, k=2000)
df_new['4'] = random.choices(lst4, k=2000)
df_new['5'] = random.choices(lst5, k=2000)
df_new['6'] = random.choices(lst6, k=2000)
8hhllhi2

8hhllhi21#

这里有一个简单的解决方案:

df.apply(pd.Series.sample, replace=True, ignore_index=True, frac=1)

输出(电位):
pd.DataFrame.applypd.Series.sample方法应用于 Dataframe 的每一列,进行重新采样(replace=True),并返回原始 Dataframe 的100%大小,frac=1

23c0lvtd

23c0lvtd2#

cols = list(df.columns)

for x in range(len(cols)):
   lst = df[cols[x]].to_list()
   colname = str(x+1)
   df_new[colname] = random.choices(lst, k=2000)

这里有一个循环,你可以循环遍历列名。

pzfprimi

pzfprimi3#

您可以循环原始 Dataframe 的列,并对每列使用带替换的采样,以获取新 Dataframe 的列。

df_new = pd.DataFrame()

for col_name in df.columns:
    df_new[col_name] = df[col_name].sample(n=2000, replace=True).tolist()

print(df_new)

相关问题