在只有一个值的表中获取列名

2024-09-26 22:07:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用单个值(字符串或数字)在数据库中搜索(接近60000行和20列),并检索该值对应的列名。如何在不对整个数据库执行完整搜索的情况下执行此操作?你知道吗

如果表格如下

Country | State       | Population
----------------------------------
USA     | Texas       | 100000
India   | Maharashtra | 200000

仅使用值'Maharashtra',我希望我的程序理解Maharashtra的列是'State',而不是Country或Population。你知道吗

数据存储在数据帧中。你知道吗


Tags: 数据字符串程序数据库情况数字country表格
3条回答

如果数据不经常更改,则反向索引可能是最有效的解决方案:

import numpy as np
import pandas as pd

df = pd.DataFrame({
    "Country": ["USA", "India"],
    "State": ["Texas", "Maharashtra"],
    "Population": [100_000, 200_000],
})

# Create an inverse index - must be done only once:
inverse_map = pd.Series()
for idx, column in enumerate(df.columns):
    column_data = pd.Series(np.repeat(idx, len(df[column])), index=df[column])
    inverse_map = inverse_map.append(column_data)

# This should be fast - even for many queries:
df.columns[inverse_map.loc["Maharashtra"]]
# Output: 'State'

我使用反向映射中的索引而不是列名来节省内存。你知道吗

试试这个代码,对我有用

df.columns[(df.values=='Maharashtra').any(0)].tolist()

df是您的DB in1.数据帧格式

它返回一个包含列名称的列表

熊猫:在任何列中筛选匹配搜索词的行

search = 'search term' 
df.loc[df.isin([search]).any(axis=1)]

相关问题 更多 >

    热门问题