对来自 2 个数据帧的 2 列的所有组合求和
Sum all combinations of 2 columns from 2 dataframes
我有 2 个数据框 df1 和 df2(相同的索引和行数),我想创建一个新的数据框,其中的列是 df1 和 df2 中 2 列的所有组合的总和,例如:
输入:
import pandas as pd
df1 = pd.DataFrame([[10,20]])
df2 = pd.DataFrame([[1,2]])
输出:
import pandas as pd
df3 = pd.DataFrame([[11,12,21,22]])
IIUC 你可以用 numpy 做到这一点。
>>> import numpy as np
>>> n = df1.shape[1]
>>> pd.DataFrame(df1.values.repeat(n) + np.tile(df2.values, n))
0 1 2 3
0 11 12 21 22
使用MultiIndex.from_product
for all combinations and sum DataFrames with repeated values by DataFrame.reindex
:
mux = pd.MultiIndex.from_product([df1.columns, df2.columns])
df = df1.reindex(mux, level=0, axis=1) + df2.reindex(mux, level=1, axis=1)
df.columns = range(len(df.columns))
我有 2 个数据框 df1 和 df2(相同的索引和行数),我想创建一个新的数据框,其中的列是 df1 和 df2 中 2 列的所有组合的总和,例如:
输入:
import pandas as pd
df1 = pd.DataFrame([[10,20]])
df2 = pd.DataFrame([[1,2]])
输出:
import pandas as pd
df3 = pd.DataFrame([[11,12,21,22]])
IIUC 你可以用 numpy 做到这一点。
>>> import numpy as np
>>> n = df1.shape[1]
>>> pd.DataFrame(df1.values.repeat(n) + np.tile(df2.values, n))
0 1 2 3
0 11 12 21 22
使用MultiIndex.from_product
for all combinations and sum DataFrames with repeated values by DataFrame.reindex
:
mux = pd.MultiIndex.from_product([df1.columns, df2.columns])
df = df1.reindex(mux, level=0, axis=1) + df2.reindex(mux, level=1, axis=1)
df.columns = range(len(df.columns))