【发布时间】:2021-10-09 21:46:51
【问题描述】:
我有一个我写的下面的代码它为不同的序列号字符长度创建一个新的数据帧,最后我将所有数据帧附加在一起以获得最终输出。
我正在尝试找到一种更好的方法来编写此代码。我可以使用 for 循环来做到这一点吗?
data["Serial Number"] = data['Serial Number'].str.zfill(28)
print ("Fetch Serial Number with 28 characters")
data["Output"] = data['Serial Number'].apply(lambda x: fetch_by_ser_no(x))
data.to_excel(r'first.xlsx',index = False)
data.loc[:,"itemlen"] = data["Output"].str.len()
data.loc[:,"SNlen"] = data["Serial Number"].str.len()
df = data.loc[(data['itemlen']== 1)& (data['SNlen'] == 28)]
data.drop(data[(data['SNlen'] == 28 ) & (data['itemlen'] == 1) ].index,inplace = True)
df.to_excel(r'raw.xlsx',index = False)
data["Serial Number"] = data['Serial Number'].str.zfill(30)
print ("Fetch Serial Number with 30 characters")
data["Output"] = data['Serial Number'].apply(lambda x: fetch_by_ser_no(x))
data.loc[:,"itemlen"] = data["Output"].str.len()
data.loc[:,"SNlen"] = data["Serial Number"].str.len()
df1= data.loc[(data['itemlen']== 1)& (data['SNlen'] == 30)]
data.drop(data[(data['SNlen'] == 30 ) & (data['itemlen'] == 1) ].index,inplace = True)
df1.to_excel(r'raw1.xlsx',index = False)
data["Serial Number"] = data['Serial Number'].str.zfill(32)
print ("Fetch Serial Number with 32 characters")
data["Output"] = data['Serial Number'].apply(lambda x: fetch_by_ser_no(x))
data.loc[:,"itemlen"] = data["Output"].str.len()
data.loc[:,"SNlen"] = data["Serial Number"].str.len()
df2= data.loc[(data['itemlen']== 1)& (data['SNlen'] == 32)]
data.drop(data[(data['SNlen'] == 32 ) & (data['itemlen'] == 1) ].index,inplace = True)
df2.to_excel(r'raw2.xlsx',index = False)
data["Serial Number"] = data['Serial Number'].str.zfill(34)
print ("Fetch Serial Number with 34 characters")
data["Output"] = data['Serial Number'].apply(lambda x: fetch_by_ser_no(x))
data.loc[:,"itemlen"] = data["Output"].str.len()
data.loc[:,"SNlen"] = data["Serial Number"].str.len()
data = data.append([df,df1,df2])
【问题讨论】:
-
是的..我在函数或for循环之间争论?最好的方法是什么?我想为序列号字符长度 28、30、32 和 34 执行此操作。