【问题标题】:Performance-warning when operating on dataframe在数据框上操作时的性能警告
【发布时间】:2023-02-15 21:25:00
【问题描述】:

此代码会导致性能警告,但我很难对其进行优化。

for i in range(len(data['Vektoren'][0])):
    tmp_lst = []
    for v in data['Vektoren']:
        tmp_lst.append(v[i])
    data[i] = tmp_lst

DataFrame 高度分散。这通常是多次调用frame.insert的结果,性能很差。考虑使用一次加入所有列 ng pd.concat(axis=1) 代替。要获得碎片整理的帧,请使用newframe = frame.copy()

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您似乎想要将您的系列列表/数组转换为多个列。

    而是使用:

    data = data.join(pd.DataFrame(data['Vektoren'].tolist(), index=data.index))
    

    或者:

    data = pd.concat([data, pd.DataFrame(data['Vektoren'].tolist(), index=data.index)],
                     axis=1)
    

    示例输出:

           Vektoren    0    1    2    3
    0  [1, 2, 3, 4]  1.0  2.0  3.0  4.0
    1        [5, 6]  5.0  6.0  NaN  NaN
    2            []  NaN  NaN  NaN  NaN
    

    使用的输入:

    data = pd.DataFrame({'Vektoren': [[1,2,3,4],[5,6],[]]})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-17
      • 1970-01-01
      • 2012-08-13
      • 2011-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多