如何在 pandas 中的单个数据列中应用 set 和 ignorecase
how to apply set and ignorecase in a single datacolumn in pandas
我有df,
Keys
one, ONE
ram, Ram
kumar
Raj,rAj
cricket
level,LeVel
kum,num
首先我想在 df["Keys"] 上应用设置和忽略大小写,使其成为单个值并实现
df
Name
one
ram
kumar
raj
cricket
level
kum,num
第二次操作,
我有一个列表和上面的 DataFrame,df["name"]
my_list=["ONE","Ram","CRICKEt","KUm"]
我需要比较df["name"].str.lower.split(,) with my_list.lower()
如果 my_list 中存在一个值,那么我们需要在 df["Name"]
中进行更改
我想要的输出是,
df,
name
ONE
Ram
kumar
raj
CRICKEt
level
KUm,num
提前致谢
使用str.lower
+ split
+ apply
+ join
:
df['Name'] = df['Keys'].str.lower().str.split(',').apply(set).str.join(',')
print (df)
Keys Name
0 one,ONE one
1 ram,Ram ram
2 kumar kumar
3 Raj,rAj raj
4 cricket cricket
5 level,LeVel level
6 kum,num num,kum
如果在 ,
之后可能是空格,则使用 ,\s*
作为分隔符 - 逗号 + 零个或多个:
df['Name'] = df['Keys'].str.lower().str.split(',\s*').apply(set).str.join(',')
print (df)
Keys Name
0 one, ONE one
1 ram, Ram ram
2 kumar kumar
3 Raj,rAj raj
4 cricket cricket
5 level,LeVel level
6 kum,num num,kum
编辑:
最后创建字典然后替换:
my_list=["ONE","Ram","CRICKEt","KUm"]
d = dict(zip([x.lower() for x in my_list],my_list))
print (d)
{'cricket': 'CRICKEt', 'one': 'ONE', 'ram': 'Ram', 'kum': 'KUm'}
splitted = df['Keys'].str.lower().str.split(',').apply(set)
df['Name'] = splitted.str.join(',').replace(d, regex=True)
df['Count'] = splitted.str.len()
print (df)
Keys Name Count
0 one,ONE ONE 1
1 ram,Ram Ram 1
2 kumar KUmar 1
3 Raj,rAj raj 1
4 cricket CRICKEt 1
5 level,LeVel level 1
6 kum,num num,KUm 2
我有df,
Keys
one, ONE
ram, Ram
kumar
Raj,rAj
cricket
level,LeVel
kum,num
首先我想在 df["Keys"] 上应用设置和忽略大小写,使其成为单个值并实现
df
Name
one
ram
kumar
raj
cricket
level
kum,num
第二次操作,
我有一个列表和上面的 DataFrame,df["name"]
my_list=["ONE","Ram","CRICKEt","KUm"]
我需要比较df["name"].str.lower.split(,) with my_list.lower()
如果 my_list 中存在一个值,那么我们需要在 df["Name"]
中进行更改我想要的输出是,
df,
name
ONE
Ram
kumar
raj
CRICKEt
level
KUm,num
提前致谢
使用str.lower
+ split
+ apply
+ join
:
df['Name'] = df['Keys'].str.lower().str.split(',').apply(set).str.join(',')
print (df)
Keys Name
0 one,ONE one
1 ram,Ram ram
2 kumar kumar
3 Raj,rAj raj
4 cricket cricket
5 level,LeVel level
6 kum,num num,kum
如果在 ,
之后可能是空格,则使用 ,\s*
作为分隔符 - 逗号 + 零个或多个:
df['Name'] = df['Keys'].str.lower().str.split(',\s*').apply(set).str.join(',')
print (df)
Keys Name
0 one, ONE one
1 ram, Ram ram
2 kumar kumar
3 Raj,rAj raj
4 cricket cricket
5 level,LeVel level
6 kum,num num,kum
编辑:
最后创建字典然后替换:
my_list=["ONE","Ram","CRICKEt","KUm"]
d = dict(zip([x.lower() for x in my_list],my_list))
print (d)
{'cricket': 'CRICKEt', 'one': 'ONE', 'ram': 'Ram', 'kum': 'KUm'}
splitted = df['Keys'].str.lower().str.split(',').apply(set)
df['Name'] = splitted.str.join(',').replace(d, regex=True)
df['Count'] = splitted.str.len()
print (df)
Keys Name Count
0 one,ONE ONE 1
1 ram,Ram Ram 1
2 kumar KUmar 1
3 Raj,rAj raj 1
4 cricket CRICKEt 1
5 level,LeVel level 1
6 kum,num num,KUm 2