我想添加每一列,如duration + credit_amount
,因此我创建了以下算法:
def automate_add(add):
for i, column in enumerate(df):
for j, operando in enumerate(df):
if column != operando:
columnName = column + '_sum_' + operando
add[columnName] = df[column] + df[operando]
输出:
然而,知道duration + credit_amount = credit_amount + duration
。我不想有重复的专栏。
期望函数产生以下结果:
我该怎么做?你知道吗
我尝试使用散列集,但似乎只适用于熊猫系列[1]。你知道吗
编辑: 数据帧:https://www.openml.org/d/31
您已经被指向了
itertools.combinations
,这是这里的正确工具,它将为您保存一些for循环和重复列的问题。有关排列、组合等的详细信息,请参见documentation首先,让我们创建DataFrame,这样我们就可以重现这个示例:
现在我们开始工作吧。其思想是获取所有
combinations
列,然后执行字典理解以返回类似{column_name: sum}
的内容。在这里:注意,您可以将
sum
替换为对两个pd.Series
进行操作的任何其他函数。你知道吗使用以下方法,应更快地工作:
解释:
print(list(itertools.combinations(df.columns,2)))
给出:发布内容:
这会将列的组合打印在一起。所以我把它加在轴=1上,然后把它叫做pd系列,并通过加入他们给它起了个名字。你知道吗
发布这个只需将它们附加到列表中,并将它们连接到axis=1即可得到最终结果。:)
函数可以有一个以上的if条件来检查关联的添加是否已作为列添加到dataframe,如下所示:
我还没用你的数据测试过。如果不行,试着告诉我。你知道吗
相关问题 更多 >
编程相关推荐