在熊猫中将字符串转换为小写[重复]

Posted

技术标签:

【中文标题】在熊猫中将字符串转换为小写[重复]【英文标题】:Converting strings to a lower case in pandas [duplicate] 【发布时间】:2017-08-02 16:43:38 【问题描述】:

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

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

数据是系列类型。我正在使用以下内容将 url 变量转换为小写:

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

但是,它们保持不变。

我做错了什么?

【问题讨论】:

【参考方案1】:

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

df.column_name.str.lower()

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

希望这会有所帮助!

【讨论】:

【参考方案2】:

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

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 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

【讨论】:

第一个解决方案产生了一个错误//anaconda/lib/python3.5/site-packages/pandas/core/generic.py:2701: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy self[name] = value 第二个解决方案虽然有效 我认为问题出在这一行上面的代码中,你能分享上面的 2,3 行吗? 或者检查docs 我添加了测试样本,你有错误吗?【参考方案3】:
df['url'] = df['url'].str.lower()

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

【讨论】:

收到错误//anaconda/lib/python3.5/site-packages/ipykernel/__main__.py:3: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy app.launch_new_instance() @FeyziBagirov 我没有在我的测试数据集中得到那个我试图镜像你的数据集(也是 python 3.5)。您能否在您的问题中发布代码以生成数据集,以便我们拥有相同的输入? @FeyziBagirov 你可以试试df['url'] = df.loc[:,'url'].str.lower() 但我同意大卫的观点,这里没有必要 @FeyziBagirov:对我来说,语法如下:df.loc[:, 'url'] = df.loc[:, 'url'].str.lower() 终于奏效了。

以上是关于在熊猫中将字符串转换为小写[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中将字符串转换为pandas数据框[重复]

在熊猫中将字符串转换为timedelta

ValueError:无法在熊猫中将字符串转换为浮点数

如何在python中将文本字符串列表转换为熊猫数据框?

如何在熊猫中将 4 位数字转换为小时:分钟时间格式

在python中将包含在%%中的字符串转换为小写