我在熊猫数据框中有一些布尔变量,我需要获取所有唯一的元组。所以我的想法是创建一个新的变量连接值列,然后使用 pandas.DataFrame.unique() 来获取所有唯一的元组。
所以我的想法是使用二进制开发进行连接。例如,对于数据框:
import pandas as pd
df = pd.DataFrame({'v1':[0,1,0,0,1],'v2':[0,0,0,1,1], 'v3':[0,1,1,0,1], 'v4':[0,1,1,1,1]})
我可以这样创建一个列:
df['added'] = df['v1'] + df['v2']*2 + df['v3']*4 + df['v4']*8
我的想法是迭代这样的变量列表(应该注意,在我的真正问题上,我不知道列数):
variables = ['v1', 'v2', 'v3', 'v4']
df['added'] = df['v1']
for ind, var in enumerate(variables[1:]) :
df['added'] = df['added'] + df[var] << ind
但是,这会引发错误:“TypeError:<<:'Series' 和 'int' 不支持的操作数类型。
我可以用 pandas.DataFrame.apply() 解决我的问题:
variables = ['v1', 'v2', 'v3', 'v4']
df['added'] = df['v1']
for ind, var in enumerate(variables[1:]) :
df['added'] = df['added'] + df[var].apply(lambda x : x << ind )
但是, apply (通常)很慢。我怎样才能更有效地做事?
肥皂起泡泡
守着一只汪
慕桂英3389331
相关分类