| 接觸 | 舊聯系人 |
|---|---|
| 234255 | 987778 |
| 343556 | 987877 |
| 失蹤 | 984567 |
| 失蹤 | |
| 失蹤 | 845665 |
| 343556 | 789998 |
鑒于上表,我希望瀏覽“聯系人”下的每一行并檢查是否丟失。如果該行有缺失,請使用相應的“舊聯系人”值代替文本“缺失”。如果舊聯系人為空,則將其保留為“缺失”
所需表:
| 接觸 | 舊聯系人 |
|---|---|
| 234255 | 987778 |
| 343556 | 987877 |
| 984567 | 984567 |
| 失蹤 | |
| 845665 | 845665 |
| 343556 | 789998 |
df['Contact'] = df['Contact'].apply(
lambda x: df['Old Contact'] if "Missing" in x else x)
上面的行給了我整列“舊聯系人”缺失的地方。我不確定如何在這里使用索引來獲得我想要的東西。提前致謝!
uj5u.com熱心網友回復:
利用mask
df['Contact'].mask(df['Contact'].eq('Missing'), df['Old Contact'].fillna('Missing'))
輸出:
0 234255
1 343556
2 984567
3 Missing
4 845665
5 343556
Name: Contact, dtype: object
使結果Contact列
uj5u.com熱心網友回復:
您有兩個要檢查的條件。您可以在回圈遍歷df['Contact'].
for idx in df.index:
if (df.iloc[idx]['Contact']=='Missing') & (df.iloc[idx]['Old Contact']!=''):
df.iloc[idx]['Contact']=df.iloc[idx]['Old Contact']
elif (df.iloc[idx]['Contact']=='Missing') & (df.iloc[idx]['Old Contact']==''):
df.iloc[idx]['Contact']='Missing'
else: pass
輸出:
df
Contact Old Contact
0 234255 987778
1 343556 987877
2 984567 984567
3 Missing
4 845665 845665
5 343556 789998
uj5u.com熱心網友回復:
我有一段時間沒有使用熊貓了,所以我確信有更好的解決方案,但蠻力方法可能是:
for idx in df.index:
if (df.iloc[idx]['Contact']=='Missing'):
if len(df.iloc[idx]['Old Contact'].strip()):
df.iloc[idx]['Contact']=df.iloc[idx]['Old Contact']
uj5u.com熱心網友回復:
使用.where和.assign
df = df.assign(
Contact=df["Contact"].where(df["Contact"].ne("Missing"), df["Old Contact"]).fillna("Missing")
).fillna("")
print(df)
Contact Old Contact
0 234255 987778.0
1 343556 987877.0
2 984567.0 984567.0
3 Missing
4 845665.0 845665.0
5 343556 789998.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/530715.html
上一篇:只保留href和src的子目錄(ROOThtml鏈接)
下一篇:如何標記資料框中的重復項?
