python - 如何通过迭代现有列的值来创建新列?

标签 python pandas dataframe

我的数据框中有一列,如下所示:

ContextID
7289972
7289972
7289972
7289973
7289973
7304693
7304693
7304693

我正在尝试基于此 ContextID 列创建一个新列,如下所示:

    ContextID     Name
    7289972   Gas_basics
    7289972   Gas_basics
    7289972   Gas_basics
    7289973   Plasma_basics
    7289973   Plasma_basics
    7304693   DC2
    7304693   DC2
    7304693   DC2

我尝试了以下代码

ID = data.ContextID.tolist()
print(ID)

for id in ID:
    if (ID == '7289972'):
        data['Strategyname'] = 'Plasma_basics'
    elif(ID == '7289973'):
        data['Strategyname'] = 'Gas_basics'
    elif(ID == '7304693'):
        data['Strategyname'] = 'DC2'

但它只是创建一个名为 id 的变量,其类型为 int,大小为 1,值为 7304693。

最后,我希望将这个新生成的名为 Strategyname 的列添加到名为 data 的主数据框中。

谁能告诉我我犯了什么错误,以便我可以更好地了解我的错误并帮助我克服这个问题?

谢谢

编辑1:

我有 2095 个唯一的 ContextID,每个都属于 3 个之一:Gas_basics、Plasma_basics、DC2

示例:

contextid   strategyname
7289971         DC2
7289972     Plasma_basics
7289973      Gas_basics
7289997         DC2
7289998     Plasma_basics
7289999      Gas_basics
7289972     Plasma_basics
7289973      Gas_basics
7304693         DC2

最佳答案

如果你有一个带有字典的 DataFrame:

s = """
ContextID,Name
7289972,Gas_basics
7289973,Plasma_basics
7304693,DC_Only
"""
df = pd.read_csv(pd.compat.StringIO(s), sep=',')
df

您可以将其转换为 python 字典,然后使用 pandas map 函数应用于您的数据集(有关 map 的更多信息:https://pandas.pydata.org/pandas-docs/version/0.23.3/generated/pandas.Series.map.html ):

d = dict(df.values)
df['NewName'] = df['ContextID'].map(d)
df

输出:

    ContextID   Name    NewName
0   7289972 Gas_basics  Gas_basics
1   7289972 Gas_basics  Gas_basics
2   7289972 Gas_basics  Gas_basics
3   7289973 Plasma_basics   Plasma_basics
4   7289973 Plasma_basics   Plasma_basics
5   7304693 DC_Only DC_Only
6   7304693 DC_Only DC_Only
7   7304693 DC_Only DC_Only

关于python - 如何通过迭代现有列的值来创建新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55005039/

相关文章:

python - 访问列表的某些元素

python - 如何在 Pandas 中的同一数据框中组合/合并列?

r - 将一个非空的 data.frame 与一个空的合并时的奇怪行为

python - 不知道如何根据条件合并数据

python - 为什么在第一次读取UDP套接字后socket.makefile对象失败?

python - 运行 python.exe 并在脚本执行后暂停

python - 合并 LBP 和 HOG 特征描述符

Python Pandas 内存错误

python - 根据 numpy 数组中的列值获取行号

Python/Pandas - ValueError : Index contains duplicate entries, 无法 reshape