【发布时间】:2021-07-19 19:27:25
【问题描述】:
代码sn-p
def func(a_val, b_val):
...
return new_df
mydf = mydf.append(existing_df.apply(lambda x: func(x['A'], x['B']), axis=1), ignore_index=True)
根据 sn-p 显示的代码,我正在尝试使用 apply 来遍历 existing_df 中的每一行并返回一个最终需要附加到 mydf 中的 new_df,但 apply 只返回一个 Series 对象并且 new_df 被转换进入一个系列,其中所有列和行在附加到 mydf 后都被放入一个单个单元格中。
是否允许 dataframe.apply 改为返回原始数据框?
更新示例:
import pandas as pd
existing_df = pd.DataFrame({'router': ['RouterA', 'RouterA', 'RouterB', 'RouterB'], 'vpn': ['vpn1', 'vpn2', 'vpn3', 'vpn4']})
cols = ['router', 'vpn', 'peer']
my_df = pd.DataFrame(columns=cols)
def func(router, vpn):
new_df = pd.DataFrame(columns=cols)
# look for extra information based on router + vpn, and return a dataframe. 1 vpn will return multiple peer result, and the result
# will need to return back to my_df.
return new_df
my_df = my_df.append(existing_df.apply(lambda x: func(x['router'], x['vpn']), axis=1))
new_df 应该是这样的
router vpn peer
RouterA vpn1 10.1.1.1
RouterA vpn1 10.1.1.2
RouterA vpn1 10.1.1.3
并追加到my_df,所以每个router+vpn都会返回一个多行数据帧并返回到my_df。
【问题讨论】: