问题就在这里......想象一下以下数据框作为示例:
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/