将字符串转换为小写[Pandas]

Fey*_*rov 13 python string lowercase pandas

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

 url          var1
www.CNN.com   xsd
www.Nbc.com   wer
www.BBc.com   xyz
www.fOX.com   zyx
....
Run Code Online (Sandbox Code Playgroud)

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

df.apply(lambda x: x.astype(str).str.lower())
Run Code Online (Sandbox Code Playgroud)

但是,它们保持不变.

我究竟做错了什么?

Dav*_*vid 20

df['url'] = df['url'].str.lower()
Run Code Online (Sandbox Code Playgroud)

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

  • 出现错误`//anaconda/lib/python3.5/site-packages/ipykernel/__main__.py:3:SettingWithCopyWarning:试图在DataFrame的切片副本上设置一个值。尝试改用.loc [row_indexer,col_indexer] = value参见文档中的警告:http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy app.launch_new_instance( )` (2认同)
  • @FeyziBagirov:对我来说,像这样的语法: `df.loc[:, 'url'] = df.loc[:, 'url'].str.lower()` 终于起作用了。 (2认同)

jez*_*ael 8

我认为您需要重新分配输出,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
Run Code Online (Sandbox Code Playgroud)

但如果需要将所有列转换dflowercase strings:

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
Run Code Online (Sandbox Code Playgroud)


Viv*_*han 8

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

df.column_name.str.lower()
Run Code Online (Sandbox Code Playgroud)

或者

df['column_name'].str.lower()
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 !