python - Pandas - 使用可变列输入计算新列

标签 python pandas

问题就在这里......想象一下以下数据框作为示例:

df = pd.DataFrame({'col1': [1, 2, 3, 4, 5], 'col2': [3, 4, 5, 6, 7],'col3': [3, 4, 5, 6, 7],'col4': [1, 2, 3, 3, 2]})

现在,我想添加另一列“col 5”,其计算如下:

如果“col4”的值为1,则给我索引为1的列中的相应值(即本例中的“col2”),如果“col4”为2,则给我索引为1的列中的相应值索引 2(即本例中的“col3”)等。

我已经尝试了以下方法及其变体,但我似乎无法获得正确的结果

df["col5"] = df.apply(lambda x: df.iloc[x,df[df.columns[df["col4"]]]])

非常感谢任何帮助!

最佳答案

如果您的'col4'是列索引的指示符,那么这将起作用:

df['col5'] = df.apply(lambda x: x[df.columns[x['col4']]], axis=1)

df

#   col1  col2  col3  col4  col5
#0     1     3     3     1     3
#1     2     4     4     2     4
#2     3     5     5     3     3
#3     4     6     6     3     3
#4     5     7     7     2     7

关于python - Pandas - 使用可变列输入计算新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53539544/

相关文章:

python - Django + 毒素 : Apps aren't loaded yet

python - 如何在graphene_django中隐藏/排除请求实体的某些外键字段?

python , Pandas : Filter rows of data frame based on function

python - pandas groupby 数字条纹

python - 如何在python中连接和转置两个表

python - 使用 Python 中的正则表达式清理数字中的逗号

python - Python 中优雅降级的 pickle

python - 将 caffe 模型 (VGG_Face2) 转换为 coreml 时出错

python - pandas.DataFrame.columns.values.tolist() 和 pandas.DataFrame.columns.tolist() 一样吗

python - 按数据帧中的行计算非零值的非重叠运行