假设我有一个由以下人员给出的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))
有任何建议以有效的方式进行吗?
答案 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)