Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 确定元素在数据帧中的位置_Python_Pandas_Dataframe_Position - Fatal编程技术网

Python 确定元素在数据帧中的位置

Python 确定元素在数据帧中的位置,python,pandas,dataframe,position,Python,Pandas,Dataframe,Position,我正在搜索一个函数,该函数返回数据帧中元素的位置。 -数据帧中的值之间存在重复项 -数据帧约10*2000 -该函数将使用applymap()应用于数据帧 例如: get_位置(2)不清楚,因为它可能是“R1”或“R2”。我是 想知道python是否有其他方法知道 元素保持不变-可能在applymap()操作期间 编辑: df.秩(轴=1,pct=True) 编辑2: 步骤1) 步骤2) 步骤4) 如果需要在数据帧中按值索引或列名称,请将其用于位置,然后选择转换为numpy数组的所有索引或列值:

我正在搜索一个函数,该函数返回数据帧中元素的位置。 -数据帧中的值之间存在重复项 -数据帧约10*2000 -该函数将使用applymap()应用于数据帧

例如:

get_位置(2)不清楚,因为它可能是“R1”或“R2”。我是 想知道python是否有其他方法知道 元素保持不变-可能在applymap()操作期间

编辑:

df.秩(轴=1,pct=True)

编辑2:

步骤1)

步骤2)

步骤4)


如果需要在数据帧中按值索引或列名称,请将其用于位置,然后选择转换为numpy数组的所有索引或列值:

df = pd.DataFrame({"R1": [8,2,3], "R2": [2,3,4], "R3": [-3,4,-1]})

i, c = np.where(df == 2)
print (i, c)
[0 1] [1 0]

print (df.index.values[i])
[0 1]

print (df.columns.values[c])
['R2' 'R1']
编辑:

或:

编辑:

函数的解决方案-需要通过重塑和提取Series.name创建的一列数据帧进行迭代,与列名相同:

def get_column_name1(x):
    return x.name



感谢您的快速回复!假设我正在用rank函数修改我的数据帧。这样,我在每一行中都有相同的值。有没有一种方法可以让我只显示一行的np.where(df==x),这样我就可以得到一对坐标?(参见有问题的编辑)@DieterMueller-那么您需要像一列一样的输出?或者同时使用两列,然后应用秩函数,如
cols=df.columns.values[c]
然后
df[cols.rank(axis=1,pct=True)
?我最初有一个数据帧,其中包含的值范围约为[-0,05;+0,05]。然后我应用.rank()函数来获取x轴上的pct值。我现在遇到的下一步是,当我试图使用df.rank()从初始df中检索初始值时。这就是为什么我试图确定df.rank()中的位置,然后引用初始df。两个数据帧的测量值均为10*2000。@DieterMueller-请选中编辑。有点问题,预期的输出是什么?好的。在最后一步之后,如何获得初始数据帧(df)的值?我的意思是除去所有其他值后,每行中只有一个。在这种情况下。因此,最后我想根据df.rank()中的百分比值引用inital数据帧中的列名。你能理解吗?或者我的解释缺乏信息?非常感谢。
df_rank = df_initial.rank(axis=1,pct=True)
# Building Groups based on the percentage of the respective value

    def function103(x):

        if 0.0 <= x <= 0.1:
            P1.append(get_column_name1(x))
            return x
        elif 0.1 < x <= 0.2:
            P2.append(get_column_name1(x))
            return x
        elif 0.2 < x <= 0.3:
            P3.append(get_column_name1(x))
            return x
        elif 0.3 < x <= 0.4:
            P4.append(get_column_name1(x))
            return x
        elif 0.4 < x <= 0.5:
            P5.append(get_column_name1(x))
            return x
        elif 0.5 < x <= 0.6:
            P6.append(get_column_name1(x))
            return x
        elif 0.6 < x <= 0.7:
            P7.append(get_column_name1(x))
            return x
        elif 0.7 < x <= 0.8:
            P8.append(get_column_name1(x))
            return x
        elif 0.8 < x <= 0.9:
            P9.append(get_column_name1(x))
            return x
        elif 0.9 < x <= 1.0:
            P10.append(get_column_name1(x))
            return x
        else:
            return x
# trying to get the columns Name of the the respective value
# my idea was to determine the Position of each value to then write a function

    def get_column_name1(x)

#to return the values column Name
# apply the function

P1=[]
P2=[]
P3=[]
P4=[]
P5=[]
P6=[]
P7=[]
P8=[]
P9=[]
P10=[]
P11=[]
df_rank.applymap(function103).head()
df = pd.DataFrame({"R1": [8,2,3], "R2": [2,3,4], "R3": [-3,4,-1]})

i, c = np.where(df == 2)
print (i, c)
[0 1] [1 0]

print (df.index.values[i])
[0 1]

print (df.columns.values[c])
['R2' 'R1']
i, c = np.where(df == 2)

df1 = df.rank(axis=1,pct=True)
print (df1)
         R1        R2        R3
0  1.000000  0.666667  0.333333
1  0.333333  0.666667  1.000000
2  0.666667  1.000000  0.333333

print (df1.iloc[i, c])
         R2        R1
0  0.666667  1.000000
1  0.666667  0.333333

print (df1.where(df == 2).dropna(how='all').dropna(how='all', axis=1))
         R1        R2
0       NaN  0.666667
1  0.333333       NaN
out = df1.stack()[df.stack() == 2].rename_axis(('idx','cols')).reset_index(name='val')
print (out)
   idx cols       val
0    0   R2  0.666667
1    1   R1  0.333333
def get_column_name1(x):
    return x.name
P1=[]
P2=[]
P3=[]
P4=[]
P5=[]
P6=[]
P7=[]
P8=[]
P9=[]
P10=[]
P11=[]

def function103(x):

    if 0.0 <= x[0] <= 0.1:
        P1.append(get_column_name1(x))
        return x
    elif 0.1 < x[0] <= 0.2:
        P2.append(get_column_name1(x))
        return x
    elif 0.2 < x[0] <= 0.3:
        P3.append(get_column_name1(x))
        return x
    elif 0.3 < x[0] <= 0.4:
        P4.append(get_column_name1(x))
        return x
    elif 0.4 < x[0] <= 0.5:
        P5.append(get_column_name1(x))
        return x
    elif 0.5 < x[0] <= 0.6:
        P6.append(get_column_name1(x))
        return x
    elif 0.6 < x[0] <= 0.7:
        P7.append(get_column_name1(x))
        return x
    elif 0.7 < x[0] <= 0.8:
        P8.append(get_column_name1(x))
        return x
    elif 0.8 < x[0] <= 0.9:
        P9.append(get_column_name1(x))
        return x
    elif 0.9 < x[0] <= 1.0:
        P10.append(get_column_name1(x))
        return x
    else:
        return x
a = df_rank.stack().reset_index(level=0, drop=True).to_frame().apply(function103, axis=1)
print (P4)
['R3', 'R1', 'R3']