【发布时间】:2021-01-27 23:29:26
【问题描述】:
** 我已将两列的示例 df 编辑为元组而不是整数,以说明将数据从整数更改为元组后解决方案遇到的问题**
我正在尝试在 Pandas 中创建一个新列,其值将取决于特定列的值出现在单独列的不同行上,并且在找到匹配项的情况下,使用第三列的值。
为了说明,请参见下面的示例。
我在 df.apply() 中使用 lambda 函数来执行以下操作:在第一行中,它将过滤“二”列的值等于“零”列的值的行,以及它在哪里确实,它获取列“一”的值并将其复制到新列“三”中。
df = pd.DataFrame([[(0,9),(1,9),(2,9),(3,9),(4,9)],['a','b' ,'c','d','e'],[(2,9),(3,9),(4,9),(5,9),(6,9)]]).transpose( )
df.columns = ['zero','one','two']
df['three] = df.apply(lambda x : df[df['zero'] == x['two']].loc[:,'one'], axis=1)
注意,“二”列和“零”列是唯一的,因此过滤结果将永远只有一行。
理论上,“三”列的结果应该是:“c”、“d”、“e”、“nan”、“nan”。
谢谢
【问题讨论】: