[英]If statements using list comprehension
我正在尝试构建一个包含条件列的 dataframe。 我的代码:
from faker import Faker
import pandas as pd
import random
fake = Faker()
def create_rows_faker(num=1):
output = [{"name":fake.name(),
"address":fake.address(),
"name":fake.name(),
"email":fake.email()} for x in range(num)]
return output
产生
df = pd.DataFrame(create_rows_faker(3))
df
我如何更改ouput
的定义,以便如果我有一个变量if name_column == '1'
然后将其包含在 output 中(并且不包含其他内容),并且与名称和 email 类似?
使用标准的 for 循环而不是使理解过于复杂。
def create_rows_faker(num=1, name_col = True, address_col = True, email_col = False):
output = []
for x in range(num):
out = {}
if name_col:
out["name"] = fake.name()
if address_col:
out["address"] = fake.address()
if email_col:
out["email"] = fake.email()
output.append(out)
return output
这是一个使用字典 function 和键列表的选项:
def create_rows_faker(num=1, use=('name', 'address', 'email')):
options = {"name":fake.name,
"address":fake.address,
"email":fake.email}
use = set(use)
options = {k:f for k,f in options.items() if k in use}
output = [{k:f() for k,f in options.items()} for x in range(num)]
return output
pd.DataFrame(create_rows_faker(3, use=['name']))
output:
name
0 Tracy Alexander MD
1 Mark Winters
2 Lori Edwards
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.