你是python程序员,有一个表格根据筛选df['lang']=en,再根据df['label']是否为空,随机比例非空:空=2:1的数据形成一个新表格 ,共随机抽取一个表格中的150条数据
时间: 2024-11-22 11:42:30 浏览: 5
作为Python程序员,你可以使用pandas库来完成这个任务。首先,假设`df`是一个DataFrame,步骤如下:
1. 筛选出`lang`列值为'en'的行:
```python
df_filtered = df[df['lang'] == 'en']
```
2. 检查并计算`label`列的空值数量,然后确定非空值和空值的比例为2:1:
```python
non_empty_count = df_filtered['label'].notnull().sum()
total_rows = len(df_filtered)
empty_ratio = 1 / (1 + 2) # 因为2:1的比例
max_empty_rows = int(total_rows * empty_ratio)
```
3. 随机选择非空值和空值的数量,确保总和不超过150条数据:
```python
if non_empty_count <= 150 and max_empty_rows <= 150:
sample_size = min(non_empty_count, max_empty_rows)
else:
sample_size = 150
```
4. 使用`sample`函数从非空和空值中分别抽取指定数量的行,并合并:
```python
sampled_data = pd.concat([
df_filtered[df_filtered['label'].notnull()].sample(sample_size),
df_filtered[df_filtered['label'].isnull()].sample(max(0, sample_size - non_empty_count))
])
```
5. 最后得到的新表格就是随机抽取后的结果:
```python
new_table = sampled_data.sample(frac=1).head(150) # 如果实际需要150条数据,使用head
```
阅读全文