【发布时间】:2019-09-07 15:24:34
【问题描述】:
我的头脑中有一个小问题。我有一个类似于以下的数据框:
Number Title
12345678 A
34567890-S B
11111111 C
22222222-L D
这是在python中使用pandas从excel文件中读取,然后将索引设置为第一列:
db = db.set_index(['Number'])
然后我根据数字查找标题:
lookup = "12345678"
title = str(db.loc[lookup, 'Title'])
但是...虽然后缀“-Something”的任何东西都可以工作,但没有它的任何东西都找不到位置(例如,12345678 找不到任何东西,34567890-S 会)。我唯一的预感是它与查找字符串或整数有关,但我尝试了一些事情(将表转换为所有字符串,将 loc 更改为 iloc、ix 等),但到目前为止还没有运气。
有什么想法吗?谢谢:)
更新:因此从头开始尝试不会表现出相同的行为(创建测试数据库大概只是将所有内容设置为字符串),但是从 CSV 导入会导致上述情况,并且.. .
搜索“12345678”(作为字符串)找不到它,但将 12345678 作为 int 将。其他人也同样相反。因此,数据框仅将索引中的纯数字与整数匹配,而将其他任何与字符串匹配。
另外,我不能不搜索后缀,因为我有多行具有不同的后缀,例如 34567890-S、34567890-L、34567890-X。
【问题讨论】:
-
你确定“数字”后面没有空格吗?
-
如果您没有@vercelli 提到的空格,应该可以工作。 '12345678' 会起作用,但 '12345678' 不会。您可以删除索引
df.index=df.index.str.strip()然后loc[]
标签: python string pandas dataframe indexing