python - 如何使用 iterrows 和 iteritems 更快地运行 pandas for 循环

标签 python pandas for-loop dataframe iteration

我有一个 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/

相关文章:

python - 为什么在循环变量使用相同名称时列表会被最后一项覆盖?

java - 如何让这个程序计算用户输入单词中的元音?

python - IMDBpy 获取屏幕信息

python - 为什么根记录器接受来自子记录器的日志?

python - 标记颜色仍未显示

python - 对样本大小大于 DataFrame 长度的行进行采样

python - 在 Pandas 中用 Epoch 替换 NaT

python - 图像上的Canny操作

python - cv2.findContours 找不到轮廓

loops - 循环中是否满足条件