更有效地执行嵌套python循环
我在这里看过其他解释,但都不太合适。 解包代码可以工作,但速度非常慢。有没有更好的方法可以用于python。我看不出我怎么能在这里工作。 任何建议都会很有帮助更有效地执行嵌套python循环,python,pandas,dataframe,Python,Pandas,Dataframe,我在这里看过其他解释,但都不太合适。 解包代码可以工作,但速度非常慢。有没有更好的方法可以用于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
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
使用: 说明:
多索引对系列
进行重塑
DataFrame
-nees escape++
,对于一个或多个空格,使用\s+
ffill向前填充NaN
s
欢迎来到StackOverflow。请花点时间阅读这篇文章,以及如何提供答案,并相应地修改你的问题。这些提示可能也很有用。可以吗?我希望输出看起来更好。它是超级的,谢谢。@Martintoma-我开始做它,但是有很多功能,所以我希望在3分钟内它会是done@MartinThoma-好了,哇!谢谢你,耶斯雷尔!我得一行一行地检查一下。我原以为我已经掌握了python(老VBA大师)的诀窍,但你已经告诉我,我还有很多路要走。@jezrael-当我在代码中运行这个时,我得到了“ValueError:Index包含重复的条目,无法重塑”我正在使用的df比我上面的示例有更多的列。我应该寻找什么来尝试修复此问题?@jezrael-我通过创建一个唯一的索引df['new']=range(1,len(df.index)+1)来修复它,因为我的数据帧不包含任何唯一的valuecolumns:)
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