【问题标题】:Pandas Dataframe find intervals for a value and attribute namePandas Dataframe 查找值和属性名称的间隔
【发布时间】:2018-04-12 12:27:03
【问题描述】:

假设我有一个 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  

我需要获取我的值在低列中的区间字母。

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

如果值 a 或 >b 或 >c 则低 = 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))  

有什么建议可以有效地做到这一点吗?

【问题讨论】:

  • 将其添加到您的问题中,因此显示预期的输出数据框。这有很大帮助。谢谢。
  • 嗨,斯科特。感谢您的反馈,我更新了问题。

标签: python pandas dataframe intervals


【解决方案1】:
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) 

【讨论】:

    猜你喜欢
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    • 2023-01-09
    • 2017-04-05
    • 2014-11-26
    相关资源
    最近更新 更多