我试图将一个if条件应用于pandas系列,然后对一个列表中的整数值应用除法操作到同一数据帧中的另一个系列。
我尝试申请的逻辑如下:如果hh_cat
系列中的家庭类别与i
的当前值匹配,则将消费系列除以相关的总数按列表值family_con[i-1]
给出的家庭消费子组。
for i in hh_cat:
result = mod_df[(mod_df["hh_cat"]==i)].div()["consumption"](family_con[i-1])
TypeError Traceback (most recent call last)
<ipython-input-120-219bc0ce5a07> in <module>()
1 for i in hh_cat:
----> 2 result = mod_df[(mod_df["hh_cat"]==i)].div()["consumption"] (family_con[i-1])
TypeError: f() takes at least 2 arguments (1 given)
答案 0 :(得分:0)
使用合并可能会有所帮助:
首先将列表转换为数据框:
df = pd.DataFrame(family_con,columns=['cons'])
接下来,将一列添加到与索引匹配的原始数据框中,并可用于加入:
mod_df["hh_cat_join"]= mod_df["hh_cat"]-1
接下来执行加入:
merged_df=mod_df.merge(df,how='left',left_on='hh_cat_join',right_index=True)
最后进行计算并将其保存在结果栏中:
merged_df['result']=merged_df['consumption']/merged_df['cons']
答案 1 :(得分:0)
我很少知道变量hh_cat
和列'hh_cat'
之间的联系,但我认为您可以添加名为hh_cat_var
的列(对应于您的变量&{ #39;重复遍历)并执行
mod_df[mod_df['hh_cat'] == mod_df['hh_cat_var']]....