使用python创建多列的虚拟变量
我正在使用一个包含两列ID号的数据帧。为了进一步的研究,我想对这些ID号(有两个ID号)做一种虚拟变量。但是,我的代码不会合并两个数据帧中的列。如何合并两个数据帧中的列并创建虚拟变量 数据帧 当前代码 所需输出使用python创建多列的虚拟变量,python,pandas,variables,dummy-variable,Python,Pandas,Variables,Dummy Variable,我正在使用一个包含两列ID号的数据帧。为了进一步的研究,我想对这些ID号(有两个ID号)做一种虚拟变量。但是,我的代码不会合并两个数据帧中的列。如何合并两个数据帧中的列并创建虚拟变量 数据帧 当前代码 所需输出 给猫剥皮的不同方式;下面是我如何使用附加的groupby: # pd.get_dummies(df.astype(str)).groupby(lambda x: x.split('_')[1], axis=1).sum() pd.get_dummies(df.astype(str)).g
给猫剥皮的不同方式;下面是我如何使用附加的
groupby
:
# pd.get_dummies(df.astype(str)).groupby(lambda x: x.split('_')[1], axis=1).sum()
pd.get_dummies(df.astype(str)).groupby(lambda x: x.split('_')[1], axis=1).max()
1 2 3 4
0 1 1 0 0
1 0 1 1 0
2 0 0 1 1
另一个选项是
stack
ing,如果您喜欢简洁:
# pd.get_dummies(df.stack()).sum(level=0)
pd.get_dummies(df.stack()).max(level=0)
1 2 3 4
0 1 1 0 0
1 0 1 1 0
2 0 0 1 1
如果输出中需要指示器使用
max
,如果需要计数值使用sum
,然后使用其他参数并将值转换为字符串:
df = pd.get_dummies(df.astype(str), prefix='', prefix_sep='').max(level=0, axis=1)
#count alternative
#df = pd.get_dummies(df.astype(str), prefix='', prefix_sep='').sum(level=0, axis=1)
print (df)
1 2 3 4
0 1 1 0 0
1 0 1 1 0
2 0 0 1 1
# pd.get_dummies(df.astype(str)).groupby(lambda x: x.split('_')[1], axis=1).sum()
pd.get_dummies(df.astype(str)).groupby(lambda x: x.split('_')[1], axis=1).max()
1 2 3 4
0 1 1 0 0
1 0 1 1 0
2 0 0 1 1
# pd.get_dummies(df.stack()).sum(level=0)
pd.get_dummies(df.stack()).max(level=0)
1 2 3 4
0 1 1 0 0
1 0 1 1 0
2 0 0 1 1
df = pd.get_dummies(df.astype(str), prefix='', prefix_sep='').max(level=0, axis=1)
#count alternative
#df = pd.get_dummies(df.astype(str), prefix='', prefix_sep='').sum(level=0, axis=1)
print (df)
1 2 3 4
0 1 1 0 0
1 0 1 1 0
2 0 0 1 1