[英]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.