我有一个列,其中包含 Dataframe 的某些列的名称。
import pandas as pd d = {'col1': [1, 2], 'col2': [3, 4], 'col3':['col1', 'col2']} df = pd.DataFrame(data=d)
现在,我想根据col3中的名称创建一个col4,其中的值来自col1(第一行)或col2(第二行)。
toiithl61#
使用索引查找:
idx, cols = pd.factorize(df['col3']) df['col4'] = df.reindex(cols, axis=1).to_numpy()[np.arange(len(df)), idx]
输出:
col1 col2 col3 col4 0 1 3 col1 1 1 2 4 col2 4
a8jjtwal2#
您可以使用df.eval
df['col4']=df.apply(lambda row:df.eval(df.col3)[row.name][row.name],axis=1) df Out[233]: col1 col2 col3 col4 0 1 3 col1 1 1 2 4 col2 4
2条答案
按热度按时间toiithl61#
使用索引查找:
输出:
a8jjtwal2#
您可以使用df.eval