仅对数据框的某些类型的列执行numpy随机选择

时间:2019-06-11 02:28:57

标签: python pandas numpy dataframe

我有一个数据框,其中包含int和字符串类型的列。 我想添加一个名为“ MIN”的列,并为每一行从小数点中选择包含最小值的列名。

当我删除所有字符串列时,它可以正常工作,现在我需要添加一个条件来跳过“对象”列,但一切都会失败-将它们存储在单独的数据框中,添加AND条件等。

h_data:
size, price, facilities, service, country
9, 101,  6, 9, fr
10, 15, 14, 6, us
8, 54, 9, 8, il
-- This used to work when I had only int values
h_data['MIN'] = [np.random.choice(h_data.columns[x == x.min()], 1)[0] for x in h_data.values]

我希望获得一个名为“ MIN”的新列,其中将包含每行包含最小整数的列名。

1 个答案:

答案 0 :(得分:0)

由于您进行了随机选择,因此只要满足条件,填充哪一列都没有关系。使用:

df['MIN']=df.isin(df.min(axis=1)).dot(df.columns+',').str.split(',').str[0]
print(df)

   size  price  facilities  service country         MIN
0     9    101           6        9      fr  facilities
1    10     15          14        6      us     service
2     8     54           9        8      il        size