小编Tes*_*ty8的帖子

Pandas数据框基于其他列值将功能应用于列字符串

我想从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)

python pandas

6
推荐指数
1
解决办法
6213
查看次数

Pandas groupby & linregress 如何提取

我正在按组对数据帧进行线性回归以生成汇总统计数据。我使用 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)

python pandas

5
推荐指数
2
解决办法
3311
查看次数

pandas dataframe返回列的字符串中的第一个单词

我有一个数据帧:

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)

python dataframe pandas

5
推荐指数
2
解决办法
1万
查看次数

python中的字符串替换性能

我有一个约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)

python string performance list

4
推荐指数
1
解决办法
219
查看次数

Python cron作业:/ usr / local / bin:错误的解释器:权限被拒绝

我在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初学者,所以我确定我缺少一些简单的东西!

python linux cron

4
推荐指数
1
解决办法
3513
查看次数

正则表达式搜索并用修改后的模式替换模式 - Python

是否可以使用正则表达式模式匹配找到一个字符串,对其进行操作并返回它?

例如:

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)

python regex

4
推荐指数
1
解决办法
1634
查看次数

在文本文件中找不到字符串

给定项目编号列表,我试图搜索带有最近项目编号列表的文本文件,并在最近的列表中标识任何项目编号.然后我想添加最近列表中尚未存在的任何项目.

我的代码如下,它似乎没有在文本文件中找到任何内容.为什么不工作?

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)

python string search file python-2.7

3
推荐指数
1
解决办法
1518
查看次数

标签 统计

python ×7

pandas ×3

string ×2

cron ×1

dataframe ×1

file ×1

linux ×1

list ×1

performance ×1

python-2.7 ×1

regex ×1

search ×1