Python 将列表中的项目随机分配给Dataframe列

Python 将列表中的项目随机分配给Dataframe列,python,pandas,dataframe,Python,Pandas,Dataframe,我正在尝试创建一个包含两列和1000行的pandas数据框 第一列我想要一个100到500之间的随机整数 在第二列中,我希望有一个列表的随机子集(项目的随机数和项目本身) 我试图从中得出的列表如下: fruits = ['banana', 'apple', 'orange', 'strawberry', 'melon', 'kiwi', 'grape', 'mango', 'peach', 'pear'] 下面是一些我试图让Dataframe看起来像的示例: Column 1 C

我正在尝试创建一个包含两列和1000行的pandas数据框

第一列我想要一个100到500之间的随机整数

在第二列中,我希望有一个列表的随机子集(项目的随机数和项目本身)

我试图从中得出的列表如下:

fruits = ['banana', 'apple', 'orange', 'strawberry', 'melon', 'kiwi', 'grape', 'mango', 'peach', 'pear']
下面是一些我试图让Dataframe看起来像的示例:

Column 1        Column 2
  304            ['melon', 'kiwi', 'grape', 'apple']
  176            ['grape', 'banana']
  456            ['strawberry', 'orange', 'melon', 'kiwi']

提前谢谢你

对于第1列,使用
numpy
生成100到500之间的随机数字数组。对于第2列,迭代选择
结果的随机子集。见下文:

import pandas as pd
import numpy as np

fruits = ['banana', 'apple', 'orange', 'strawberry', 'melon', 'kiwi', 'grape', 'mango', 'peach', 'pear']

col1 = np.random.randint(100, 500, 1000)

col2 = []
for i in range(1000):
    n = np.random.randint(1, len(fruits) + 1)
    col2.append(np.random.choice(fruits, size=n))

df = pd.DataFrame({'Column 1' : col1,
                   'Column 2' : col2})
示例输出
df

  Column 1                                           Column 2
0       163  [peach, strawberry, banana, apple, grape, bana...
1       102  [banana, kiwi, peach, mango, pear, peach, stra...
2       480                             [apple, orange, peach]
3       231                                       [pear, kiwi]
4       202                             [banana, peach, grape]

请从下一页重复和。“演示如何解决此编码问题”不是堆栈溢出问题。你必须做出诚实的尝试,然后问一个关于你的算法或技术的具体问题。非常感谢你的回答,如果我想使列表唯一,最好的解决方案是对列表应用lambda函数将其转换为元组吗?为什么将基础数据结构更改为元组会创建唯一的列表?谢谢您的回答,它们都起作用了,消除重复的方法是在生成随机列表后使用lambda函数转换为一个集合。非常感谢您的回答,如果我想使列表唯一,最好的解决方案是对列表应用lambda函数将其转换为元组吗?@adrian如果您使用
tuple()
将输入包装到
append
,您可以在
df
中使用元组而不是列表。但这不会阻止第2列中的重复收集!相反,在追加之前,您需要检查每个列表(或元组)是否在
col2
中(如果不在,则获取新样本)
import random
import pandas as pd

fruits = ['banana', 'apple', 'orange', 'strawberry', 'melon', 'kiwi', 'grape', 'mango', 'peach', 'pear']

column_1 = [random.randint(300,500) for i in range(1000)]
df = pd.DataFrame(column_1, columns=['column_1'])

df['column_2'] = [[fruits[random.randint(1, len(fruits)-1)] for i in range(random.randint(1, len(fruits)-1))] for x in range(1000)]