Pandas Dataframe查找值和属性名称的间隔

时间:2018-04-12 12:27:03

标签: python pandas dataframe intervals

假设我有一个由以下人员给出的pandas数据帧:

df2 = pd.DataFrame(np.random.randint(low=0, high=10, size=(5, 4)),
columns ['value', 'a', 'b', 'c']) 
df2['low'] = ''
df2
      value  a  b  c  low
   0      5  3  7  9    
   1      9  3  7  9    
   2      2  5  0  8    
   3      2  8  2  7    
   4      5  5  7  7  

我需要得到我的值在列中的低位的字母。

例如,对于值= 5的第一个lign。 我想确定该值在“a”和“b”之间,并将列中的字母“a”归为低位。

如果值< a< b< c然后低='无' 如果值> a或> b或> c则low = Max(a; b; c)

预期输出:

   value  a  b  c  low
0      5  3  7  9   a    
1      9  3  7  9   c 
2      2  5  0  8   b 
3      2  8  2  7   b 
4      5  5  7  7   a

我带来了以下内容,但不确定如何使用该框架增加框架:

if min(a, b, c)<x<max(a,b,c):
    print(min(a,b,c))
else:
    if x<min(a,b,c) :
        print('None')
    else:
        print(max(a,b,c))  

有任何建议以有效的方式进行吗?

1 个答案:

答案 0 :(得分:0)

import pandas as pd
import numpy as np

# Create random dataframe
df = pd.DataFrame(np.random.randn(100, 4), columns=list('ABCD'))

# Copy first dataframe and calculate distance from A column values
df2 = df.copy()
df2['B'] = abs(df2['A']-df2['B'])
df2['C'] = abs(df2['A']-df2['C'])
df2['D'] = abs(df2['A']-df2['D'])

# Delete first column
df2.drop(['A'], axis=1, inplace=True)

# Find from copied dataframe the lowest value and insert name of that value
# into original dataframe
df['E'] = df2.idxmin(axis=1)