Python 大熊猫的交叉添加
如何在我的pandas数据框中应用交叉加法(OR),如下所示 输入:Python 大熊猫的交叉添加,python,pandas,Python,Pandas,如何在我的pandas数据框中应用交叉加法(OR),如下所示 输入: A B C D 0 0 1 0 1 输出: A B C D 0 0 1 0 1 1 1 1 1 1 2 0 1 0 1 3 1 1 1 1 到目前为止,我可以用这个 cols=df.columns n=len(cols) df1=pd.concat([df]*n,ignore_index=True).eq(1) df2= pd.concat([df.T]*n,
A B C D
0 0 1 0 1
输出:
A B C D
0 0 1 0 1
1 1 1 1 1
2 0 1 0 1
3 1 1 1 1
到目前为止,我可以用这个
cols=df.columns
n=len(cols)
df1=pd.concat([df]*n,ignore_index=True).eq(1)
df2= pd.concat([df.T]*n,axis=1,ignore_index=True).eq(1)
df2.columns=cols
df2=df2.reset_index(drop=True)
print (df1|df2).astype(int)
我认为有更简单的方法来处理这种情况。您可以使用
numpy
|
操作进行广播:
data = df.values
df = pd.DataFrame((data.T | data), columns=df.columns)
或用作:
您可以使用
numpy
|
操作进行以下广播:
data = df.values
df = pd.DataFrame((data.T | data), columns=df.columns)
或用作:
Numpy解决方案: 首先使用
iloc
将第一行提取到1d
数组,然后通过a[:,None]
将形状更改为Mx1
:
a = df.iloc[0].values
df = pd.DataFrame(a | a[:, None], columns=df.columns)
print (df)
A B C D
0 0 1 0 1
1 1 1 1 1
2 0 1 0 1
3 1 1 1 1
Numpy解决方案:
首先使用iloc
将第一行提取到1d
数组,然后通过a[:,None]
将形状更改为Mx1
:
a = df.iloc[0].values
df = pd.DataFrame(a | a[:, None], columns=df.columns)
print (df)
A B C D
0 0 1 0 1
1 1 1 1 1
2 0 1 0 1
3 1 1 1 1