Python 熊猫根据其最大值划分多个列
我有一个包含40列的数据帧,其中一些列是只包含0或1的二进制列。我想用一个名为“size”的列来划分所有非二进制列 现在我正在使用:Python 熊猫根据其最大值划分多个列,python,pandas,Python,Pandas,我有一个包含40列的数据帧,其中一些列是只包含0或1的二进制列。我想用一个名为“size”的列来划分所有非二进制列 现在我正在使用: for i in range(df.shape[1]): col = df.iloc[:, i] if int(col.max()) > 1: # to check whether this column is binary df.iloc[:, i] = col/df['size'] i+=1 我觉得我们应该避免在
for i in range(df.shape[1]):
col = df.iloc[:, i]
if int(col.max()) > 1: # to check whether this column is binary
df.iloc[:, i] = col/df['size']
i+=1
我觉得我们应该避免在pandas中使用foor循环,那么有没有更优雅的方法来实现这一点呢?以下类似的方法应该可以工作(假设数据帧中至少有一个非二进制列):
类似于以下的方法应该可以工作(假设数据帧中至少有一个非二进制列):
此处不需要IMHO
numpy
和tolist
,熊猫拥有此任务的一切:
返回最大值大于1的所有列并丢弃“大小”:
cols = df.columns[df.max()>1].drop('size')
对于计算,只选择整列,不选择子集,因此您可以不使用“ix”或“loc”,直接按列名索引:
df[cols] = df[cols].div(df['size'], 0)
此处不需要IMHO
numpy
和tolist
,熊猫拥有此任务的一切:
返回最大值大于1的所有列并丢弃“大小”:
cols = df.columns[df.max()>1].drop('size')
对于计算,只选择整列,不选择子集,因此您可以不使用“ix”或“loc”,直接按列名索引:
df[cols] = df[cols].div(df['size'], 0)
ix
自v0.20以来已被弃用,请改用.loc
。ix
自v0.20以来已被弃用,请改用.loc
。