我想从col'A'中删除col'B'中字符串的所有实例,如下所示:
col A col B col C
1999 toyota camry camry 1999 toyota
2003 nissan pulsar pulsar 20013 nissan
Run Code Online (Sandbox Code Playgroud)
我该如何使用熊猫呢?如果它是一个固定值(不依赖于另一列),我将使用:
df['col C'] = df['col A'].str.replace('value-to-replace','')
Run Code Online (Sandbox Code Playgroud) 我正在按组对数据帧进行线性回归以生成汇总统计数据。我使用 scipy linregress 计算了两个变量(公里与价格)的回归:
import pandas as pd
from scipy.stats import linregress
df = pd.read_csv('test dataset faceted small.csv')
grouped = df.groupby(['year','make','engine','drive','transmission','badge'])
test = grouped.apply(lambda x: linregress(x['km'], x['price']))
print test
test.to_csv('grouped.csv', index=False)
Run Code Online (Sandbox Code Playgroud)
打印测试给了我:
year make engine drive transmission badge
1994 subaru 1.6L awd auto wrx (-0.0019029525668, 2217.67284738, -0.190381626...
1997 mazda 1.3L 2wd manual 121 metro (-0.00724142957301, 4213.71579612, -0.30608491...
1999 nissan 1.6L 2wd auto pulsar plus lx n15 s2 (-0.00245336355614, 3653.42015515, -0.17060101...
Run Code Online (Sandbox Code Playgroud)
保存到 csv 的测试是:
LinregressResult(slope=-0.0019029525667976811, intercept=2217.6728473825792, rvalue=-0.19038162624636565, pvalue=4.2750387135904842e-07, stderr=0.00037275167083276965)
LinregressResult(slope=-0.0072414295730094738, intercept=4213.7157961188113, …Run Code Online (Sandbox Code Playgroud) 我有一个数据帧:
df = pd.DataFrame({'id' : ['abarth 1.4 a','abarth 1 a','land rover 1.3 r','land rover 2',
'land rover 5 g','mazda 4.55 bl'],
'series': ['a','a','r','','g', 'bl'] })
Run Code Online (Sandbox Code Playgroud)
我想从相应的id中删除'series'字符串,因此最终结果应为:
最终结果应该是 'id': ['abarth 1.4','abarth 1','land rover 1.3','land rover 2','land rover 5', 'mazda 4.55']
目前我正在使用df.apply:
df.id = df.apply(lambda x: x['id'].replace(x['series'], ''), axis =1)
Run Code Online (Sandbox Code Playgroud)
但这会删除字符串的所有实例,即使换句话说,就像这样:
'id': ['brth 1.4','brth 1','land ove 1.3','land rover 2','land rover 5', 'mazda 4.55']
我应该以某种方式将正则表达式与df.apply中的变量混合搭配,就像这样吗?
df.id = df.apply(lambda x: x['id'].replace(r'\b' + x['series'], ''), axis =1)
Run Code Online (Sandbox Code Playgroud) 我有一个约50,000个字符串(标题)的列表,以及从这些标题中删除的约150个字的列表(如果找到它们).到目前为止,我的代码如下.最终输出应该是50,000个字符串的列表,其中删除了150个单词的所有实例.我想知道这样做最有效(表现明智)的方式.我的代码似乎在运行,虽然速度很慢..
excludes = GetExcludes()
titles = GetTitles()
titles_alpha = []
titles_excl = []
for k in range(len(titles)):
#remove all non-alphanumeric characters
s = re.sub('[^0-9a-zA-Z]+', ' ',titles[k])
#remove extra white space
s = re.sub( '\s+', ' ', s).strip()
#lowercase
s = s.lower()
titles_alpha.append(s)
#remove any excluded words
for i in range (len(excludes)):
titles_excl.append(titles_alpha[k].replace(excludes[i],''))
print titles_excl
Run Code Online (Sandbox Code Playgroud) 我在CentOS VPS中设置了以下crontab:
SHELL=/bin/bash
HOME=/
* * * * * /root/ebay/findcheapitems.py
Run Code Online (Sandbox Code Playgroud)
该脚本可以使用以下命令手动正常运行:
python2.7 ebay/findcheapitems.py
Run Code Online (Sandbox Code Playgroud)
它已通过dos2unix运行以进行EOL转换,具有-rwxr-xr-x权限,并且文件的第一行具有:
#!/usr/local/bin python2.7
Run Code Online (Sandbox Code Playgroud)
但是,每次cron作业尝试运行时,我都会收到邮件,说:
/bin/bash: /root/ebay/findcheapitems.py: /usr/local/bin: bad interpreter: Permission denied
Run Code Online (Sandbox Code Playgroud)
我已经使用“哪个”确认了python2.7的位置:
# which python2.7
/usr/local/bin/python2.7
Run Code Online (Sandbox Code Playgroud)
我是一名Linux初学者,所以我确定我缺少一些简单的东西!
是否可以使用正则表达式模式匹配找到一个字符串,对其进行操作并返回它?
例如:
mazda mazda6 mazda 6 mazda3 mazda2
Run Code Online (Sandbox Code Playgroud)
我希望将'mazda6','mazda3'替换'mazda2'为'6', '3'。'2'我可以使用 regex 轻松找到它们(mazda\d),但是我不知道如何用匹配模式的修改版本替换它们(即 \d 应该保留)。
理想输出:
mazda 6 mazda 6 3 2
Run Code Online (Sandbox Code Playgroud) 给定项目编号列表,我试图搜索带有最近项目编号列表的文本文件,并在最近的列表中标识任何项目编号.然后我想添加最近列表中尚未存在的任何项目.
我的代码如下,它似乎没有在文本文件中找到任何内容.为什么不工作?
def filter_recent_items(items):
recentitems = []
with open('last 600 items.txt', 'r+') as f:
for item in items:
if item['ID'] in f:
print 'In! --', item['ID']
else:
recentitems.append(item['ID'])
print 'Out ---', item['ID']
for item in recentitems:
f.write("%s\n" % item)
items = [ {'ID': 1}, {'ID': 'test2'} ]
filter_recent_items(items)
Run Code Online (Sandbox Code Playgroud)
例如,我的文本文件是:
test2
test1
1
Run Code Online (Sandbox Code Playgroud)
但上面的代码返回
Out --- 1
Out --- test2
Run Code Online (Sandbox Code Playgroud)