如何应用将数据框返回到另一个数据框的每一行的函数

时间:2019-10-16 13:04:55

标签: python python-3.x pandas dataframe data-science

我有以下函数,该函数需要一行并返回一个数据帧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)

2 个答案:

答案 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)