我有以下函数,该函数需要一行并返回一个数据帧MoveNext
,我不确定函数语法是否正确:
MoveNext
我需要将此函数应用于称为ld_coefs_df_long
的数据帧的每一行,并将结果(每一行的数据帧)堆叠在一起,以使用以下语法生成新的数据帧:
def apply_calc_coef (row):
device_id = row['deviceId']
sound_filename = row['filename']
sound_fullpath = os.path.join(basepath, device_id, sound_filename)
offset = row['offset']
telemetry_id = row['telemetry_id']
fs,data = wavfile.read(sound_fullpath)
ld_coefs_df = calc_ld_coefs(data, fs, offset=offset, win_len=2000, ndeg=12)
ld_coefs_df_long = pd.melt(ld_coefs_df, id_vars=['time'] , var_name='series_type' )
ld_coefs_df_long['telemetry_id'] = telemetry_id
ld_coefs_df_long.rename(columns={"time": "t_seconds"})
return ld_coefs_df_long // is a dataframe
显然我的方向不正确,因为我的功能或应用方法都不正确,或者两者都不正确。
编辑:
当我使用ds_telemetry_pd
时,出现以下错误:
ds_telemetry_pd.apply(lambda x: apply_calc_coef(x))
ds_telemetry_pd.apply(apply_calc_coef, axis=1)
答案 0 :(得分:0)
您的结果将是一系列的DataFrame。为了在一个DataFrame中转换它们,您可以执行以下操作:
pd.concat(ds_telemetry_pd.apply(apply_calc_coef, axis=1).tolist(), ignore_index=True)
答案 1 :(得分:0)
类似的东西对我有用:
chunks=[]
for i in range(ds_telemetry_pd.shape[0]):
row = ds_telemetry_pd.iloc[i,:]
t_df = apply_calc_coef2(row)
chunks.append(t_df)
ld_coef_df= pd.concat(chunks, ignore_index=True)