我試圖在 df['Emails'] 的每一行中獲取串列的第一個值,但在現實生活中(這是一個示例 df)我不知道串列的長度是多少,所以我只是假設最長的長度為 5,然后嘗試將其縮減,直到找到正確的長度并選擇該索引位置,但我得到了IndexError: index 5 is out of bounds for axis 0 with size 2,我不知道該怎么做。任何幫助表示贊賞。謝謝。
我當前的代碼:
df = pd.DataFrame({'Emails': [['[email protected]', '[email protected]', '[email protected]'],[None, '[email protected]']],
'num_wings': [2, 0],
'num_specimen_seen': [10, 2]},
index=['falcon', 'dog'])
df['Emails'] = np.select([df['Emails'][0],df['Emails'][1],df['Emails'][2]],[df['Emails'][0],df['Emails'][1],df['Emails'][2]])
print(data['Emails'])
預期輸出:
假設原始資料框None位于第一個索引位置,我希望它占據下一個索引位置None
期望的輸出
Emails num_wings num_specimen_seen
falcon [email protected] 2 10
dog [email protected] 0 2
uj5u.com熱心網友回復:
每當您有一列包含串列時,explode通常都會成為您的朋友,這里就是這種情況。
使用explode, groupby(level=0)(在索引的第 0(第一)級分組)和first(選擇第一個非空值(包括 None、NaN 等))
df['Emails'] = df['Emails'].explode().groupby(level=0).first()
輸出:
>>> df
Emails num_wings num_specimen_seen
falcon [email protected] 2 10
dog [email protected] 0 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/444535.html
上一篇:如何比較兩個石斑魚“頻率”視窗
