Faker 和 Pandas | ValueError:值的长度 (1) 与索引的长度 (2)

问题描述

我正在使用Faker;用于为模拟数据集生成值的库。

我正在使用 Jupyter Notebooks

代码的目标是在性别条件下生成特定的假数据。例如。比如“夫人”和“彼得”不要混在一起。

错误与我如何将数据附加到数据帧有关。

单元格 1:

import numpy as np
import pandas as pd

from faker import Faker
fake = Faker()

import random

np.random.seed(42)

单元格 2:

def example_dataset_simulation(samples,cols):
    df = pd.DataFrame(index=np.arange(samples),columns=np.arange(cols))
    
    #for col in range(cols):
    for row in range(samples):       
        gender = random.randint(0,1)
        
        df['Prefix'] = [fake.prefix_male() if gender == 0 else fake.prefix_female()]
        df['Forename'] = [fake.first_name_male() if gender == 0 else fake.prefix_female()]
        df['Surname'] = fake.first_name()  # unconditional
        df['Suffix'] = [fake.suffix_male() if gender == 0 else fake.suffix_female()]
    
    return df

单元格 3:

df = example_dataset_simulation(2,2)
df

错误

ValueError: Length of values (1) does not match length of index (2)

解决方法

我的if-conditional “输出”不能用列表符号包裹起来。

即删除'[]'

原文:

df['Prefix'] = [fake.prefix_male() if gender == 0 else fake.prefix_female()]

现在:

df['Prefix'] = fake.prefix_male() if gender == 0 else fake.prefix_female()

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...