首页 > 解决方案 > 将列表中的随机项目数分配给 Dataframe 列

问题描述

我正在尝试创建一个具有两列和 1000 行的熊猫数据框。

第一列我想要一个 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']

先感谢您!

标签: pythonpandasdataframe

解决方案


对于第 1 列,使用 生成 100 到 500 之间的随机数字数组numpy。对于第 2 列,迭代地选择 的随机子集fruits。请参阅以下内容:

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]

推荐阅读