Python Pandas通过列名列按值选择列

atmip9wb  于 2023-01-28  发布在  Python
关注(0)|答案(2)|浏览(161)

我有一个列,其中包含 Dataframe 的某些列的名称。

import pandas as pd
d = {'col1': [1, 2], 'col2': [3, 4], 'col3':['col1', 'col2']}
df = pd.DataFrame(data=d)

现在,我想根据col3中的名称创建一个col4,其中的值来自col1(第一行)或col2(第二行)。

toiithl6

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
a8jjtwal

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

相关问题