[英]Create new column from existing dataframe column with condition
GroupID 列有兩個值,一個是字母數字,另一個是數字,我想使用列的字母數字部分來創建新列,有一些條件,比如 o_dict 中是否存在字母數字,那么它應該返回值,否則它應該只返回“NOT IN DIC”
GroupID
0 ad32s;#1214;#rf343;#4343
1 wd435;#6464;#ed532;#5454
2 av345e:#3132
3 ok132d;#8897
4 tn123h;#0980
5 as845;#657;#un567t;#456;#qw147;#123
6 ok132d;#8897
7 as845;#657;#un567t;#456;#qw147;#123
8 wd435;#6464;#ed532;#5454
o_dict= {"ad32s":"rupesh","ed532":"Frank","dr501u":"David","ok132d":"Ripal",
"qw147":"ilesh","av345e":'carls'}
下面是我的代碼:
def function01(row):
o_dict= {"ad32s":"rupesh","ed532":"Frank","dr501u":"David","ok132d":"Ripal","qw147":"ilesh","av345e":'carls'}
if element.isalnum():
if element in o_dict:
return owner_dict[element]
else:
return "NOT IN DIC"
else:
continue
df['New_column'] = df.apply(lambda x: function01(x), axis=1)
如果字母數字值最初為 position,則此代碼有效,但如果它為 3 或 5 position,則此代碼無效。 它適用於第 0,2,3,4 6 行,但不適用於 1,5,7,8。
O/p 應該有兩列,其中包含與 groupid 匹配的 dict 值,否則它應該填充“NOT IN DIC”。
我不確定我現在能做什么,是否有另一種方法來獲得這個值? 是否有任何搜索 function 可用於搜索此值?
感謝您的幫助:)
我發現在我的代碼中 for-loop 僅適用於列表中的第一個值,並且它填充“NOT IN DIC”而不檢查其他值。 我現在做了以下更改,我得到了預期的 output。
def function01(row):
o_dict= {"ad32s":"rupesh","ed532":"Frank","dr501u":"David","ok132d":"Ripal","qw147":"ilesh","av345e":'carls'}
listA = row['Assigned'].split(";#")
listB = [i for i in listA if i.isdigit()==False]
for element in listA:
if element in owner_dict:
return owner_dict[element]
else:
continue
return "NOT IN DIC"
df['New_column'] = df.apply(lambda x: function01(x), axis=1)
您可能想使用numpy.select
import numpy
import pandas
d = {
"GroupID": [
"ad32s;#1214;#rf343;#4343",
"wd435;#6464;#ed532;#5454",
"av345e:#3132",
"ok132d;#8897",
"tn123h;#0980",
"as845;#657;#un567t;#456;#qw147;#123",
"ok132d;#8897",
"as845;#657;#un567t;#456;#qw147;#123",
"wd435;#6464;#ed532;#5454",
]
}
o_dict = {
"ad32s": "rupesh",
"ed532": "Frank",
"dr501u": "David",
"ok132d": "Ripal",
"qw147": "ilesh",
"av345e": "carls",
}
df = pandas.DataFrame.from_dict(d)
values = []
def fn(k):
values.append(o_dict[k])
return df["GroupID"].str.find(k) != -1
conditions = list(map(fn, o_dict))
df["New_column"] = numpy.select(conditions, values, default="NOT IN DIC")
print(df)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.