2 回答

TA贡献1712条经验 获得超3个赞
您需要为每个单元格调用一次 get_ids,而不是为每一列调用一次:
df = pd.DataFrame({
'LeaseID': [gen_ids(10) for _ in range(1000)],
'PropertyID': [gen_ids(10) for _ in range(1000)],
'xyz': np.random.choice(List1, 1000),
'abc': np.random.choice(List2, 1000),
})
输出是:
LeaseID PropertyID xyz abc
0 NHQikWbUZI phwUIn9IgZ 8 19
1 f6aBvrSeWe zV0tmst212 9 15
2 hdTHtm7LvU lC6uQJeHRX 8 14
3 FnppdLbbcq na9dVUO3Ay 2 17
4 arXAq4EvzT 7dvKTclo6o 1 18
...

TA贡献1155条经验 获得超0个赞
替代代码:
gen_ids修改了问题中的函数以返回 a Series。
# Import libraries
import random
import string
import pandas as pd
import numpy as np
# Generate alphanumeric lease id and property ids
def gen_ids(length, len_df):
s = []
for i in range(len_df):
ids = ''.join(random.choices(string.ascii_letters + string.digits, k=length))
s.append(ids)
return s
# Create DataFrame
List1 = ['a','b','c','D','e']
List2 = ['G','h','k','L','q']
df = pd.DataFrame({
'LeaseID': gen_ids(10, 1000),
'PropertyID': gen_ids(10, 1000),
'xyz': np.random.choice(List1, 1000),
'abc': np.random.choice(List2, 1000)
})
输出
print(df)
LeaseID PropertyID xyz abc
0 gxpSTdLoPH rswWVZuBIW a q
1 OSdR5vOA0I gHKdcYKw5s e L
2 WAmNQ4ieRH ThC1Apk5YA e h
3 BYUTgbKcbl IKcdjvH9da c L
4 4CNFqbu7hO uJEWhlEufu a k
.. ... ... .. ..
添加回答
举报