【发布时间】:2022-08-19 02:54:59
【问题描述】:
我想为原始数据帧的每一行在新数据帧中创建增强数据。
所以,我已经定义了我想在应用中使用的增强方法,如下所示:
def augment(row: pd.Series, column_name: str, target_df: pd.DataFrame, num_samples: int):
# print(type(row))
target_df_start_index = target_df.shape[0]
raw_img = row[column_name].astype(\'uint8\')
bin_image = convert_image_to_binary_image(raw_img)
bin_3dimg = tf.expand_dims(input=bin_image, axis=2)
bin_img_reshaped = tf.image.resize_with_pad(image=bin_3dimg, target_width=128, target_height=128, method=\"bilinear\")
for i in range(num_samples + 1):
new_row = row.copy(deep=True)
if i == 0:
new_row[column_name] = np.squeeze(bin_img_reshaped, axis=2)
else:
aug_image = data_augmentation0(bin_img_reshaped)
new_row[column_name] = np.squeeze(aug_image, axis=2)
# display.display(new_row)
target_df.loc[target_df_start_index + i] = new_row
# print(target_df.shape)
# display.display(target_df)
当我这样称呼它时,一切正常:
tmp_df = pd.DataFrame(None, columns=testDF.columns)
augment(testDF.iloc[0], column_name=\'binMap\', target_df=tmp_df, num_samples=4)
augment(testDF.iloc[1], column_name=\'binMap\', target_df=tmp_df, num_samples=4)
但是,当我使用 \'apply\' 方法尝试它时,我得到的打印件或显示工作正常,但生成的数据框显示错误
tmp_df = pd.DataFrame(None, columns=testDF.columns)
testDF.apply(augment, args=(\'binMap\', tmp_df, 4, ), axis=1)
这是应用调用后 o/p 数据的样子 -
,data
<Error>, <Error>
<Error>, <Error>
我究竟做错了什么?
-
我喜欢你正在检查
type(row),这是有道理的。建议你在里面扔一个breakpoint(),然后使用llist /nnext 关注.apply()的进度。 docs.python.org/3/library/functions.html#breakpoint ,参见pdb文档。另外,编写一个更简单的 .apply 函数,这样您就可以确信某物按预期工作,然后从那里开始。 -
我在单个调用的 o/p 上尝试了更简单的应用——应用是为 \'binMap\' 列中的每个单元格计算 SHA1,以验证图像确实不同。对于调试器,我相信我需要将笔记本转换为脚本,然后尝试调试器。
标签: python-3.x pandas dataframe