这是一个古老的问题,但是为了完整起见,您可以从包含新数据的应用函数中返回一个Series,从而避免了需要迭代3次的麻烦。传递
axis=1到apply函数
sizes会将函数应用于数据框的每一行,并返回一个序列以添加到新的数据框。这个系列s包含新值以及原始数据。
def sizes(s): s['size_kb'] = locale.format("%.1f", s['size'] / 1024.0, grouping=True) + ' KB' s['size_mb'] = locale.format("%.1f", s['size'] / 1024.0 ** 2, grouping=True) + ' MB' s['size_gb'] = locale.format("%.1f", s['size'] / 1024.0 ** 3, grouping=True) + ' GB' return sdf_test = df_test.append(rows_list)df_test = df_test.apply(sizes, axis=1)


