gpt4 book ai didi

Python - iterrows 的替代解决方案

转载 作者:行者123 更新时间:2023-12-01 06:29:27 24 4
gpt4 key购买 nike

我编写了以下代码来创建数据框,并根据特定条件添加新的行和列。不幸的是,执行起来需要很多时间。

有其他方法可以做到这一点吗?任何意见都将受到高度赞赏。

dfCircuito=None
for index, row in dadosCircuito.iterrows():
for mes in range(1,13):
for nue in range(1,5):
for origem in range (1,3):
for suprimento in range (1,3):
for tipo in range (1,3):

df=pd.DataFrame(dadosCircuito.iloc[[index]])
df['MES']=mes
if(nue==1):
df['NUE']='N'
elif(nue==2):
df['NUE']='C'
elif(nue==3):
df['NUE']='F'
else:
df['NUE']='D'

if(origem==1):
df['Origem']='DISTRIBUICAO'
else:
df['Origem']='SUBTRANSMISSAO'


if(suprimento==1):
df['Suprimento']='INTERNO'
else:
df['Suprimento']='EXTERNO'

if(tipo==1):
df['TipoOcorrencia']='EMERGENCIAL'
else:
df['TipoOcorrencia']='PROGRAMADA'


dfCircuito=pd.concat([dfCircuito, df], axis=0) ```

最佳答案

如果我理解正确的话,您正在尝试在 dadosCircuito 的每行中添加多行。额外的行是 mes=1...12 的排列;颜色=N,C,F,D; ...

您可以创建一个包含属性排列的数据框,然后将其连接回 dadosCircuito:

mes = range(1,13)
nues = list('NCFD')
origems = ['DISTRIBUICAO', 'SUBTRANSMISSAO']
suprimentos = ['INTERNO', 'EXTERNO']
tipos = ['EMERGENCIAL', 'PROGRAMADA']

# Make sure dadosCircuito.index is unique. If not, call a reset_index
# dadosCircuito = dadosCircuito.reset_index()
df = pd.MultiIndex.from_product([dadosCircuito.index, mes, nues, origems, suprimentos, tipos], names=['index', 'MES', 'NUE', 'Origem', 'Suprimento', 'TipoOcorrencia']) \
.to_frame(index=False) \
.set_index('index')

dfCircuito = dadosCircuito.join(df)

关于Python - iterrows 的替代解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59974684/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com