Python 使用列及其值在dataframe中创建新列
我有一个熊猫数据框Python 使用列及其值在dataframe中创建新列,python,pandas,Python,Pandas,我有一个熊猫数据框 df = pd.DataFrame({'id':[1,2,3,4], 'attr1':[1,1,0,0], 'attr2':[0,1,1,0], 'attr3':[1,1,1,0], 'attr4':[1,1,1,1]}) 我想把它转换成 基本上创建一个新变量,如果其值为1,则该变量将包含以前的数据帧列使用:
df = pd.DataFrame({'id':[1,2,3,4],
'attr1':[1,1,0,0],
'attr2':[0,1,1,0],
'attr3':[1,1,1,0],
'attr4':[1,1,1,1]})
我想把它转换成
基本上创建一个新变量,如果其值为1,则该变量将包含以前的数据帧列使用:
df1 = df.filter(like='attr')
df = df.drop(df1.columns, axis=1)
df['var'] = df1.dot(df1.columns + ' ').str.rstrip()
print (df)
id var
0 1 attr1 attr3 attr4
1 2 attr1 attr2 attr3 attr4
2 3 attr2 attr3 attr4
3 4 attr4
说明:
cols = df.columns[df.columns.str.startswith('attr')]
df = df.drop(cols, axis=1).assign(var=df[cols].dot(cols + ' ').str.rstrip())
print (df)
id var
0 1 attr1 attr3 attr4
1 2 attr1 attr2 attr3 attr4
2 3 attr2 attr3 attr4
3 4 attr4
对于恢复使用:
感谢您的及时回复!如何使用新创建的数据框恢复到原始数据框?@saurabhkumar-如果我的答案有用,请不要忘记-单击答案旁边的复选标记,将其从灰色变为填充。谢谢
df1 = df.join(df.pop('var').str.get_dummies(' '))
print (df1)
id attr1 attr2 attr3 attr4
0 1 1 0 1 1
1 2 1 1 1 1
2 3 0 1 1 1
3 4 0 0 0 1