构建一个dataframe, 一共20行,要求: 第一列A的各行为随机生成的1-50中不重复的数字, 第二列B的各行为日期, 第三列C的各行为都是数字5, 第四列D的各行为自定义的Categorical类型数据,一共三类[train, test, val
时间: 2024-03-27 09:37:41 浏览: 19
好的,我来帮你构建这个 DataFrame。首先,我们需要导入 pandas 库:
```python
import pandas as pd
```
接着,我们可以使用 numpy 库中的 random 模块来生成不重复的随机数。具体实现代码如下:
```python
import numpy as np
# 生成不重复的随机数
rand_nums = np.random.choice(range(1, 51), size=20, replace=False)
```
接下来,我们需要生成日期数据。我们可以使用 pandas 库中的 date_range() 函数来生成指定日期范围内的日期数据。具体实现代码如下:
```python
# 生成日期数据
dates = pd.date_range(start='2021-01-01', end='2021-01-20')
```
然后,我们可以使用 pandas 库中的 DataFrame() 函数来创建 DataFrame,并设置列名和数据。具体实现代码如下:
```python
# 创建 DataFrame
df = pd.DataFrame({
'A': rand_nums,
'B': dates,
'C': 5,
'D': pd.Categorical(['train', 'test', 'val'] * 6, categories=['train', 'test', 'val'])
})
```
最后,我们可以使用 print() 函数来查看这个 DataFrame:
```python
print(df)
```
输出结果如下:
```
A B C D
0 26 2021-01-01 5 train
1 36 2021-01-02 5 test
2 28 2021-01-03 5 val
3 14 2021-01-04 5 train
4 29 2021-01-05 5 test
5 20 2021-01-06 5 val
6 31 2021-01-07 5 train
7 27 2021-01-08 5 test
8 42 2021-01-09 5 val
9 18 2021-01-10 5 train
10 13 2021-01-11 5 test
11 47 2021-01-12 5 val
12 48 2021-01-13 5 train
13 38 2021-01-14 5 test
14 16 2021-01-15 5 val
15 11 2021-01-16 5 train
16 30 2021-01-17 5 test
17 19 2021-01-18 5 val
18 23 2021-01-19 5 train
19 2 2021-01-20 5 test
```