簡體   English   中英

Pandas - 在整個 dataframe 中查找具有特定值的列

[英]Pandas - Find a column with a specific value in the entire dataframe

我有一個 DataFrame 有幾列。 有一列的值在整個 dataframe 中只出現一次。 我想寫一個 function 來返回具有該特定值的列的列名。 我可以通過通常的數據探索手動找到它所在的列,但是由於我有多個具有相同屬性的數據框,我需要能夠為多個數據框找到該列。 所以一個有點概括的 function 會更好用。

問題是我事先不知道我正在尋找哪一列,因為在每個 dataframe 中,具有該特定值的特定列的 position 是不同的。 此外,不同數據框中所需的列具有不同的名稱,因此我不能使用 df['my_column'] 之類的東西來提取列。

謝謝

您需要迭代列並查找值:

def find_col_with_value(df, value):

    for col in df:
        if (df[col] == value).any():
             return col

這將返回包含value的第一列的名稱。 如果 value 不存在,它將返回None

檢查整個 DataFrame 以獲取特定值,檢查any以查看它是否出現在列中,然后對列進行切片(或 DataFrame,如果您想要系列)

import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.normal(0, 5, (100, 200)),
                  columns=[chr(i+40) for i in range(200)])
df.loc[5, 'Y'] = 'secret_value'  # Secret value in column 'Y'

df.eq('secret_value').any().loc[lambda x: x].index
# or
df.columns[df.eq('secret_value').any()]

Index(['Y'], dtype='object')

我有另一個解決方案:

names = ds.columns
for i in names:
    for j in ds[i]:
        if j == 'your_value':
            print(i)
            break

在這里,您正在收集所有列的名稱,然后在找到它時迭代所有數據集。 然后打印列的名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM