我想創建一個新列,然后使用另一個引數作為填充該列的條件。
這是我的代碼,它不會繼續 elif。即使第一個引數不符合我設定的引數,也只應用了第一個引數。
for i in df_csrdata_2mos_Filtered_Done["Agent"]:
if i == "unez" or i == "rmbua" or i == "destrada" or i == "amateo" or i == "cmabelison":
df_csrdata_2mos_Filtered_Done["AgentTag"] = "Agent 1"
elif i == "rverga" or i == "dpcaban" or i == "dgsugui":
df_csrdata_2mos_Filtered_Done["AgentTag"] = "Agent 2"
elif i == "gmic" or i == "jdera":
df_csrdata_2mos_Filtered_Done["AgentTag"] = "Agent 3"
elif i == "gras" or i == "mcsrra":
df_csrdata_2mos_Filtered_Done["AgentTag"] = "Agent 4"
elif i == "jcawan" or i == "rmcola" or i == "mjgamo":
df_csrdata_2mos_Filtered_Done["AgentTag"] = "Agent 5"
elif i == "ychaco" or i == "phondra":
df_csrdata_2mos_Filtered_Done["AgentTag"] = "Agent 6"
elif i == "mmorang" or i == "vsin":
df_csrdata_2mos_Filtered_Done["AgentTag"] = "Agent 7"
elif i == "pbong":
df_csrdata_2mos_Filtered_Done["AgentTag"] = "Agent 8"
else:
print("AgentTag Done!")
uj5u.com熱心網友回復:
您的 if/elif 作業正常。
基于df_我假設您正在使用 Pandas 資料框,在這種情況下,它只是df_csrdata_2mos_Filtered_Done["AgentTag"] = "X"用新值替換整個系列。
>>> df = pd.DataFrame({"a": [1, 2, 3]})
>>> df
a
0 1
1 2
2 3
>>> df["b"] = "Agent Perry"
>>> df
a b
0 1 Agent Perry
1 2 Agent Perry
2 3 Agent Perry
>>>
如果最后一個Agent是"pbong",則 df 中的所有 AgentTag 都將是 Agent 8。
看起來你正在尋找Series.map()一個字典:
>>> agent_map = {
... "unez": "Agent 1",
... "rverga": "Agent 2",
... }
>>> df = pd.DataFrame({"agent": ["unez", "rverga", "hello"]})
>>> df
agent
0 unez
1 rverga
2 hello
>>> df["AgentTag"] = df["agent"].map(agent_map)
>>> df
agent AgentTag
0 unez Agent 1
1 rverga Agent 2
2 hello NaN
>>>
uj5u.com熱心網友回復:
不要使用回圈,這里沒有必要。
更好的是映射Series.map:
d = {
"Agent 1": ["unez", "rmbua", "destrada", "amateo", "cmabelison"],
"Agent 2": ["rverga", "dpcaban", "dgsugui"],
"Agent 3": ["gmic", "jdera"],
"Agent 4": ["gras", "mcsrra"],
"Agent 5": ["jcawan", "rmcola", "mjgamo"],
"Agent 6": ["ychaco", "phondra"],
"Agent 7": ["mmorang", "vsin"],
"Agent 8": ["pbong"],
}
# flatten lists
d1 = {k: oldk for oldk, oldv in d.items() for k in oldv}
df_csrdata_2mos_Filtered_Done["AgentTag"] = df_csrdata_2mos_Filtered_Done["Agent"].map(d1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/364176.html
上一篇:Java代碼中for回圈中的i 計數錯誤-Prim演算法
下一篇:R:計算條件在資料框中出現的次數
