gpt4 book ai didi

python - 更有效地执行嵌套 python 循环

转载 作者:行者123 更新时间:2023-12-01 09:20:28 28 4
gpt4 key购买 nike

我在这里查看了其他解释,但没有一个非常合适。解包代码可以工作,但速度非常慢。有没有更好的方法可以与 python 一起使用。我不明白如何在这里获得列表理解。任何建议都会非常有帮助。

import pandas as pd

df = pd.DataFrame(data={'a':['A1 + A3','B4 + A4 + D2','C2 + D2'],'b':['L700 +
L800','G700','L2600 + L900'],'c':['6','7','8']})
df

a b c
0 A1 + A3 L700 + L800 6
1 B4 + A4 + D2 G700 7
2 C2 + D2 L2600 + L900 8
<小时/>
df2 = pd.DataFrame(columns = df.columns)
for index, row in df.iterrows():
userLabel = row.loc['a']
cells = userLabel.split('+')

ID = row.loc['b']
tech = ID.split('+')
i = 0
for cell in cells:

cell = cell.strip()
row.loc['a'] = cell
if i > len(tech)-1:
i = i-1
row.loc['b'] = tech[i]
df2.loc[len(df2)] = row
i += 1

df2

a b c
0 A1 L700 6
1 A3 L800 6
2 B4 G700 7
3 A4 G700 7
4 D2 G700 7
5 C2 L2600 8
6 D2 L900 8

最佳答案

用途:

df = (df.set_index('c')
.stack()
.str.split('\s+\+\s+', expand=True)
.stack()
.unstack(1)
.ffill()
.reset_index(level=1, drop=True)
.reset_index()
.reindex(columns=['a','b','c'])
)
print (df)
a b c
0 A1 L700 6
1 A3 L800 6
2 B4 G700 7
3 A4 G700 7
4 D2 G700 7
5 C2 L2600 8
6 C2 L900 8

说明:

  1. 第一set_index用于拆分列 用于拆分
  2. reshape stack对于 SeriesMultiIndex
  3. split 每行创建 DataFrame通过正则表达式 - 需要转义 + 并且对于一个或多个空格使用 \s+
  4. reshape stackunstack对于第二级到列
  5. 通过 ffill 向前填充 NaN
  6. 数据清理 reset_index
  7. 如果列的顺序很重要,请添加 reindex

关于python - 更有效地执行嵌套 python 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50829764/

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