【问题标题】:Generating data frames, but only getting 1 row生成数据帧,但只得到 1 行
【发布时间】:2021-05-16 09:56:39
【问题描述】:

我希望在 Python 中使用 faker 库创建一个数据框,但我只能得到一行,不明白代码中的问题是什么。这里是一样的:

import pandas as pd

for dat in range(int(input())):
    dat = [[fake.email(),fake.phone_number(),fake.address(),fake.name(),fake.date(),fake.pyint(0,3)]]

v = pd.DataFrame(dat, columns=['Email','PhNo','Address','Name','Date','Children']) 

如果我通过打印或 head 功能看到 v 中的列,我只能看到 1 行。 我希望根据用户输入查看全部行数,比如如果是 3,那么应该有 3 行。

【问题讨论】:

    标签: python pandas dataframe faker


    【解决方案1】:

    您只是在每次迭代中更新“dat”值。首先创建一个列表,然后添加数据。

    import pandas as pd
    from faker import Faker
    fake = Faker()
    dat = []
    for i in range(int(input())):
    dat.append([fake.email(),fake.phone_number(),fake.address(),fake.name(),fake.date(),fake.pyint(0,3)])
    
    v= pd.DataFrame(dat, columns =['Email','PhNo','Address','Name','Date','Children'])
    print(v)
    

    【讨论】:

    • 如果我想生成一个字符在a-c之间的假文本,应该怎么做?
    • import random def atoc(): res = '' for i in range(0,10): res=res+random.choice('abc') return res print(atoc())
    【解决方案2】:

    您在每个循环中覆盖 dat。您需要将新数据附加到现有的:

    dat = []
    for _ in range(int(input())):
       dat.append([fake.email(), fake.phone_number(), fake.address(), fake.name(), fake.date(), fake.pyint(0,3)])
    

    【讨论】:

    • 如果我想生成一个字符在a-c之间的假文本,应该怎么做?
    猜你喜欢
    • 2013-05-29
    • 2021-09-16
    • 1970-01-01
    • 2021-11-08
    • 2016-10-17
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 2020-02-01
    相关资源
    最近更新 更多