我有一个 pandas
数据框:
import pandas as pd
df = pd.DataFrame({'dummy_1' : [0, 0, 0, 1, 1, 0],
'dummy_2' : [1, 1, 0, 0, 1, 1],
'dummy_3' : [1, 1, 1, 0, 0, 0]})
我想将产品添加为新列(在同一数据框中),每一列的产品,以及其他两列。
因此生成的数据框看起来像这样:
df = pd.DataFrame({ 'dummy_1' : [0, 0, 0, 1, 1, 0],
'dummy_2' : [1, 1, 0, 0, 1, 1],
'dummy_3' : [1, 1, 1, 0, 0, 0],
'dummy_12' :[0, 0, 0, 0, 1, 0],
'dummy_13' :[0, 0, 0, 0, 0, 0],
'dummy_23' :[1, 1, 0, 0, 0, 0]})
有没有一种有效的方法来做到这一点?高效的意思是一种适用于例如的方式。 50 列
最佳答案
使用 itertools.combinations
获取所有组合并遍历这些组合以计算向量化乘积并分配给新列
import pandas as pd
from itertools import combinations
df = pd.DataFrame({'dummy_1' : [0, 0, 0, 1, 1, 0],
'dummy_2' : [1, 1, 0, 0, 1, 1],
'dummy_3' : [1, 1, 1, 0, 0, 0]})
for i in combinations(df.columns, 2):
col_name = i[0] + i[1].split('_')[-1]
df[col_name] = df[i[0]] * df[i[1]]
输出
dummy_1 dummy_2 dummy_3 dummy_12 dummy_13 dummy_23
0 1 1 0 0 1
0 1 1 0 0 1
0 0 1 0 0 0
1 0 0 0 0 0
1 1 0 1 0 0
0 1 0 0 0 0
关于python - 如何将许多列的产品创建为新列 pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54633917/