Python:从数据框中删除字典中不存在值的行

标签 python pandas dictionary dataframe

我有一个如下所示的 csv 文件(或数据框):

Text    Location    State
A   Florida, USA    Florida
B   NY              New York
C       
D   abc 

以及一个键值对为的字典:

stat_map = {
        'FL': 'Florida',
        'NY': 'New York',
        'AR': 'Arkansas',
}

如何删除第三行和第四行,即带有文本 C 和 D 的行,以便我的数据框仅包含我在字典中有值(value)的行。应删除状态为空白或具有不在字典值中的某个值的所有行。最终输出应如下所示:

Text    Location    State
    A   Florida, USA    Florida
    B   NY              New York

请帮忙。

最佳答案

使用extract + replace ,最后按 dropna 删除行:

stat_map = {
        'FL': 'Florida',
        'NY': 'New York',
        'AR': 'Arkansas',
}

#get list from all values from keys and values of dict
L = list(stat_map.keys()) + list(stat_map.values())
print (L)
['NY', 'FL', 'AR', 'New York', 'Florida', 'Arkansas']


df['State1'] = df['Location'].str.extract('(' + '|'.join(L) + ')', expand=False)
                             .replace(stat_map)
df = df.dropna(subset=['State1'])
print (df)
  Text      Location     State    State1
0    A  Florida, USA   Florida   Florida
1    B            NY  New York  New York

关于Python:从数据框中删除字典中不存在值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46784707/

相关文章:

python - 从包 : "from .* import *" 导入所有函数

python - pandas:沿着 DataFrame 识别 "portions"

python - 是否可以给 python 字典一个初始容量(并且有用吗)

java - Map 的值是一个对象。我如何使用/迭代所有这些变量? ( java )

python - 在python中动态添加属性到__init__方法

javascript - 使用 BS4 抓取用 JS 编写的脚本

python - 循环图像,保存ID名称并将其相应地存储在数据框中

python - 通过部分匹配 r 中的另一个数据帧来对数据帧进行子集化(对 python/pandas 解决方案开放)

python - 如何将字典列表保存到文件中?