我有一個資料框:
Prefix Value
0 [1, 2]
1 [3,8,9]
2 [4, 5, 6]
我希望有一個新列基于 Prefix 列從 Value 列回傳元素:
Prefix Value Element
0 [1, 2] 1
1 [3,8,9] 8
2 [4, 5, 6] 6
我嘗試了以下代碼但錯誤:
df["Element"]=df.Value.str[df.Prefix]
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()
uj5u.com熱心網友回復:
這可以使用串列推導來完成,以獲得合理有效的解決方案
df['Element'] = [val[prefix] for val, prefix in zip(df['Value'], df['Prefix'])]
Prefix Value Element
0 0 [1, 2] 1
1 1 [3, 8, 9] 8
2 2 [4, 5, 6] 6
.str您的代碼失敗,因為您傳遞了一個只能向其傳遞整數值的系列(可迭代) 。
uj5u.com熱心網友回復:
試試這個:
df = pd.DataFrame({'col': [[1,3,5], [4,7,9], [7,14, 16], [6,13, 3, 9]]})
df['nth_elmnt'] = [x[i] for x, i in zip(df.col, df.index)]
uj5u.com熱心網友回復:
想不出矢量化的方式。但以下apply應該作業
df['Element'] = df.apply(lambda x: x["Value"][x["Prefix"]], axis=1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/429593.html
