【发布时间】:2020-03-19 22:49:28
【问题描述】:
我确信这一定是直截了当的,但是几天来一直在尝试解决这个问题,我想我知道自己做错了什么,但想法却很困难:
我正在使用一个函数来对 Dataframe 进行子集化,并基于该子集在该子集中创建一个新列并填充它。这可行,但除非我将其分配回名为 mod_df 的新数据框,否则我无法将其恢复为 df
好像函数结束后,数据丢失了。
希望有任何想法
mod_df = []
def Pop_Gen(lower, upper, val):
x = df[(df['byear'] >= lower) & (df['byear'] <= upper)].assign(Gen = val)
mod_df.append(x)
for index, row in gen_Ref_df.iterrows():
Pop_Gen(row.lower,row.upper,row.val)
输入
第一个数据帧:
df:
Name byear
0 John 1980
1 Mary 1990
第二个数据框:
gen_Ref_df:
val lower upper
0 old 1970 1985
1 new 1986 1995
电流输出
mod_df:
Name byear Gen
0 John 1980 old
1 Mary 1990 new
预期输出(在df中无需放入mod_df)
df:
Name byear Gen
0 John 1980 old
1 Mary 1990 new
【问题讨论】:
-
请提供minimal reproducible example,以及一些输入,以及当前和预期的输出。
标签: python function dataframe assign