在pandas中将字符串转换为小写

时间:2017-03-12 17:16:39

标签: python string pandas lowercase

我有一个包含域名的数据:

 url          var1
www.CNN.com   xsd
www.Nbc.com   wer
www.BBc.com   xyz
www.fOX.com   zyx
....

数据属于Series类型。我使用以下内容将url变量转换为小写:

df.apply(lambda x: x.astype(str).str.lower())

但是,它们保持不变。

我做错了什么?

3 个答案:

答案 0 :(得分:16)

df['url'] = df['url'].str.lower()

应对该系列进行操作,并将其替换为小写版本。

答案 1 :(得分:2)

我认为你需要重新分配输出,如果仅适用于apply列,则最好省略url

df = pd.DataFrame({'url': ['www.CNN.com', 'www.Nbc.com', 'www.BBc.com', 'www.fOX.com'], 
                   'var1': ['XSD', 'wer', 'xyz', 'zyx']})

print (df)
           url var1
0  www.CNN.com  XSD
1  www.Nbc.com  wer
2  www.BBc.com  xyz
3  www.fOX.com  zyx

#if types of column is str, astype is not necessary
df.url = df.url.astype(str).str.lower()
print (df)
           url var1
0  www.cnn.com  XSD
1  www.nbc.com  wer
2  www.bbc.com  xyz
3  www.fox.com  zyx

但是如果需要将df的所有列转换为lowercase string s:

df = df.astype(str).apply(lambda x: x.str.lower())
print (df)
           url var1
0  www.cnn.com  xsd
1  www.nbc.com  wer
2  www.bbc.com  xyz
3  www.fox.com  zyx

答案 2 :(得分:1)

要转换单个列,我们可以使用

df.column_name.str.lower()

df['column_name'].str.lower()

希望这会有所帮助!