我在数据框prices_df
中有一列为thumbnail_url
。
zipcode thumbnail_url
0 11201 https://a0.muscache.com/im/pictures/6d7cbbf7-c...
1 10019 0
2 10027 https://a0.muscache.com/im/pictures/6fae5362-9...
3 94117 https://a0.muscache.com/im/pictures/72208dad-9...
4 20009 0
5 94131 https://a0.muscache.com/im/pictures/82509143-4...
我需要替换所有值,其中行包含https://
,或者说包含.com
(带数字)值1。
zipcode thumbnail_url
0 11201 1
1 10019 0
2 10027 1
尝试过
img_Uploaded = prices_df['thumbnail_url'].str.contains("http") == True
prices_df.replace(to_replace=prices_df[img_Uploaded],value=1,inplace=True)
我的数据框的形状为(74111, 2)
这行代码花费太多时间,我的系统冻结了。 有人可以建议一个更好的矢量化操作并对其进行解释。
我的问题已解决 但我很好奇我的代码出了什么问题?除了它没有使用向量化操作进行优化之外,还包括以下事实:它应该仍然运行正确吗?还是这就是为什么它冻结而无法运行,而下面建议的代码却在几秒钟内运行的原因
答案 0 :(得分:1)
您可以使用apply()函数来完成此操作:
prices_df.thumbnail_url = prices_df.thumbnail_url.apply(lambda url: 1 if 'http' in str(url) else url)
答案 1 :(得分:0)
您可以使用lambda表达式
prices[['thumbnail_url']] = prices[['thumbnail_url']].apply(lambda x: 1 if 'https://' in str(x) else 0)
它们是创建匿名函数的简写;表达式lambda参数:表达式产生一个函数对象。未命名对象的行为类似于使用
定义的功能对象
这里的doc