我有一個資料框:
df = pd.DataFrame({'col1': ['a', 'b', 'c', 'd'], 'col2': ['b', 'c', 'd', 'e'], 'col3': [1.0, 2.0, 3.0, 4.0]})
col1 col2 col3
0 a b 1.0
1 b c 2.0
2 c d 3.0
3 d e 4.0
我的目標是創建一個額外的 col4,其中包含來自 col3 的特定值和條件:對于每一行 x,查看 col1 中的值,如果在 col2 中存在此值的 df 中的任何位置還有另一行 y,請取col3 值形成此行 y 并將其作為 col4 放入原始行 x。否則,將此行的 col4 留空,例如 NaN。
所以 col4 的預期輸出是:NaN, 1, 2, 3。對于第一行,沒有值,因為資料幀中沒有包含 'a' 的行是 col2。與本例不同,df! 中的行可以完全未排序。
Expected output:
col1 col2 col3 col4
0 a b 1.0 NaN
1 b c 2.0 1.0
2 c d 3.0 2.0
3 d e 4.0 3.0
我試過使用 .mask 但到目前為止沒有運氣。謝謝你的幫助!
uj5u.com熱心網友回復:
您可以使用左側的 col1 和右側的 col2 將資料幀左連接到自身。
col3從連接的右側重命名為col4并洗掉右側列的其余部分示例:
df = df.merge(df, left_on='col1', right_on='col2', how='left', suffixes=('', '_'))
df = df.rename(columns={'col3_': 'col4'})
df = df[['col1', 'col2', 'col3', 'col4']]
df 看起來像:
col1 col2 col3 col4
0 a b 1 NaN
1 b c 2 1.0
2 c d 3 2.0
3 d e 4 3.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/369033.html
上一篇:比較兩個資料框列并添加匹配值
