生成任意2列的所有二次组合

时间:2016-05-07 08:39:31

标签: python pandas

我有一个git rebase -i HEAD~3 DataFrame,其中列dfC1C2C3。我想要一个新的C4,其中表示一列的每个组合与另一列相乘。这意味着在4列的情况下,我们应该有DataFrame列。此外,列应标记为sum(4, 3, 2, 1) = 10,其中每个级别标识要乘以的原始列之一。

所以,如果

MultiIndex

我希望df = pd.DataFrame(np.random.rand(2, 4) * 10, columns=['C1', 'C2', 'C3', 'C4']).astype(int) print df C1 C2 C3 C4 0 8 0 5 6 1 4 5 3 5 看起来像:

df_quad

2 个答案:

答案 0 :(得分:2)

试试这个:

public function countUsers() {
    $stmt = $this->connection->prepare("SELECT * FROM users LIMIT 500");
    $stmt->execute();
    $stmt->fetchAll(PDO::FETCH_ASSOC); 
    return $stmt->rowCount();
}

测试:

from itertools import combinations, combinations_with_replacement

data = """\
   C1  C2  C3  C4
0   8   0   5   6
1   4   5   3   5
"""
df = pd.read_csv(io.StringIO(data), delim_whitespace=True, index_col=0)

combs = list(combinations_with_replacement(df.columns.tolist(), 2))

df_quad = pd.DataFrame()

for tup in combs:
   df_quad['{0[0]}_{0[1]}'.format(tup)] = df[tup[0]] * df[tup[1]]

答案 1 :(得分:1)

解决方案

MouseDown