我有一个 for 循环:
for j in range(0,len(df)):
for i in range(0,32):
df.iloc[j,i] = df['split'].iloc[j][i]
这需要更多时间来运行。如何使用一些 iteritems 或 iterrows 或 apply 来优化它?
(我有动态的行数和列数)
示例:
A B split
0 we [w,e]
1 xy [x,y]
2 ad [a,d]
3 cf [c,f]
4 de [d,e]
5 tt [t,t]
应该变成:
A B split
0 w e [w,e]
1 x y [x,y]
2 a d [a,d]
3 c c [c,f]
4 d e [d,e]
5 t t [t,t]
最佳答案
试试这个,
res= df['A'].apply(lambda x:pd.Series(list(x)))
out=pd.concat([df,res],axis=1)
res
将包含按字符分割的新数据帧。然后与旧数据框合并。根据您的意愿重命名列。它甚至可以工作动态范围的字符。
如果我有分隔符会发生什么?
只需稍作修改,
res= df['A'].str.split(';',expand=True)
输入:
A split
0 wez [w,e]
1 xy [x,y]
2 ad [a,d]
3 cf [c,f]
4 de [d,e]
5 tt [t,t]
输出:
A split 0 1 2
0 wez [w,e] w e z
1 xy [x,y] x y NaN
2 ad [a,d] a d NaN
3 cf [c,f] c f NaN
4 de [d,e] d e NaN
5 tt [t,t] t t NaN
关于python - 如何使用 iterrows 和 iteritems 更快地运行 pandas for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50926084/