This question already has answers here:
Remap values in pandas column with a dict
(9个答案)
去年关闭。
我正在尝试做一些在熊猫中应该非常简单的事情,但是似乎没什么。我正在尝试向现有的熊猫数据框添加一列,该数据框是基于另一个(现有)列的映射值。这是一个小测试用例:
import pandas as pd
equiv = {7001:1, 8001:2, 9001:3}
df = pd.DataFrame( {"A": [7001, 8001, 9001]} )
df["B"] = equiv(df["A"])
print(df)
我希望能得到以下结果:
A B
0 7001 1
1 8001 2
2 9001 3
相反,我收到一条错误消息,告诉我equiv不是可调用函数。公平地说,它是一个字典,但是即使将其包装在一个函数中,我仍然会感到沮丧。因此,我尝试使用似乎可以与其他操作配合使用的map函数,但也由于使用字典而失败:
df["B"] = df["A"].map(lambda x:equiv[x])
在这种情况下,我只会得到KeyError:8001。我已经阅读了文档和以前的文章,但是还没有发现任何建议如何将字典与pandas数据框混合使用的信息。任何建议将不胜感激。
python参考方案
正确的方法是df["B"] = df["A"].map(equiv)
。
In [55]:
import pandas as pd
equiv = {7001:1, 8001:2, 9001:3}
df = pd.DataFrame( {"A": [7001, 8001, 9001]} )
df["B"] = df["A"].map(equiv)
print(df)
A B
0 7001 1
1 8001 2
2 9001 3
[3 rows x 2 columns]
考虑以下示例,它将处理密钥不存在的情况:
In [56]:
import pandas as pd
equiv = {7001:1, 8001:2, 9001:3}
df = pd.DataFrame( {"A": [7001, 8001, 9001, 10000]} )
df["B"] = df["A"].map(equiv)
print(df)
A B
0 7001 1
1 8001 2
2 9001 3
3 10000 NaN
[4 rows x 2 columns]
Python:检查新文件是否在文件夹中[重复] - pythonThis question already has answers here: How do I watch a file for changes? (23个答案) 3年前关闭。 我是python的新手,但是我尝试创建一个自动化过程,其中我的代码将侦听目录中的新文件条目。例如,某人可以手动将zip文件复制到一个特定的文件夹中,并且我希望我的代码能够在文件完全…
从文件中读取用户名和密码[重复] - pythonThis question already has answers here: How to read a file line-by-line into a list? (28个答案) 2年前关闭。 如何在Python中逐行读取文本(例如用户名和密码)?例如,我可以在shell / bash中实现此目的:#!/bin/bash AUTH='/aut…
python切片的奇怪行为[重复] - pythonThis question already has answers here: Reversing a list slice in python (2个答案) 7个月前关闭。 假设我们有以下列表:>>> a = [x for x in range(10)] >>> print(a) [0, 1, 2, 3, 4, 5, 6…
为随机选择的变量分配一个值[重复] - pythonThis question already has answers here: How do I randomly select a variable from a list, and then modify it in python? …
我们如何在安装了每个系统的系统启动时(最好是Linux)使Python脚本自动可执行? [重复] - pythonThis question already has an answer here: Create python script that runs at startup [closed] (1个答案) …