小编jen*_*ryb的帖子

Angular中的Money格式指令

我需要一个过滤货币字段的指令,因此用户只需要输入并隐含小数.

需求:

  1. 格式十进制字段作为用户类型 -

用户输入时从百分位开始.所以他们输入"4"并看"0.04",输入"42"并看"0.42",输入298023并看"2980.23"

  1. 字段必须是数字
  2. 必须允许负面 -
  3. 允许0.00作为数字输入
  4. 理想情况下,使用type ="number",但"type = text"是可以的
  5. 您应该能够清除该字段为空.

ng-currency过滤器不能满足这些要求.请看看掠夺者的行为,看看我的意思.

我的First Plunker有`input = text'并允许负数.一个问题是你不能输入负数作为第一个数字.清除该字段后,它将返回"0.00",但应该完全清除.

   app.directive('format', ['$filter', function ($filter) {
 return {
            require: 'ngModel', //there must be ng-model in the html
            link: function (scope, elem, attr, ctrl) {
                if (!ctrl) return;

                ctrl.$parsers.unshift(function (viewValue, modelValue) {
                    var plainNumber = viewValue.replace(/[^-+0-9]/g,'');
                    var newVal = plainNumber.charAt(plainNumber.length-1);
                    var positive = plainNumber.charAt(0) != '-';
                    if(isNaN(plainNumber.charAt(plainNumber.length-1))){
                      plainNumber = plainNumber.substr(0,plainNumber.length-1)
                    }
                    //use angular internal 'number' filter
                    plainNumber = $filter('number')(plainNumber / 100, …
Run Code Online (Sandbox Code Playgroud)

javascript format currency angularjs angularjs-directive

12
推荐指数
1
解决办法
6466
查看次数

删除dataframe python中的空间

我的代码中出现错误,因为我试图通过调用csv中的元素来创建数据帧.我从文件中调用了两列:CompanyName和QualityIssue.质量问题有三种类型:设备质量,用户和两者.我遇到了试图制作数据帧df.Equipment质量的问题,这显然不起作用,因为那里有空间.我想从原始文件中获取设备质量,并用下划线替换空格.

输入:

Top Calling Customers,         Equipment Quality,    User,    Neither,
Customer 3,                      2,           2,        0,
Customer 1,                      0,           2,        1,
Customer 2,                      0,           1,        0,
Customer 4,                      0,           1,        0,
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

import numpy as np
import pandas as pd
import pandas.util.testing as tm; tm.N = 3

# Get the data.
data = pd.DataFrame.from_csv('MYDATA.csv')   
# Group the data by calling CompanyName and QualityIssue columns.
byqualityissue = data.groupby(["CompanyName", "QualityIssue"]).size() 
# Make a pandas dataframe of the grouped data.
df = pd.DataFrame(byqualityissue) 
# Change …
Run Code Online (Sandbox Code Playgroud)

python whitespace strip dataframe pandas

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

在Matplotlib中按日期更改xlim

我试图用Python制作一个视觉上吸引人的图形.我在这里使用Randal Olson的示例http://www.randalolson.com/2014/06/28/how-to-make-beautiful-data-visualizations-in-python-with-matplotlib/并尝试进行一些调整.

我的数据很简单,

dispute_percentage
Out[34]: 

2015-08-11    0.017647
2015-08-12    0.004525
2015-08-13    0.006024
2015-08-14    0.000000
2015-08-15    0.000000
2015-08-17    0.000000
Run Code Online (Sandbox Code Playgroud)

问题是数据在2015年2月开始加载,我想在2015年4月开始显示.

这是我的代码

from __future__ import division
from collections import OrderedDict
import pandas as pd
from collections import Counter
from pylab import * 
import datetime as datetime 
dispute_percentage.plot(kind = 'line')
plt.xlabel('Date')
plt.ylabel('Percent')
plt.title('Percent Disputes In FY2015')

# Remove the plot frame lines. They are unnecessary chartjunk.    
ax = plt.subplot(111)    
ax.spines["top"].set_visible(False)    
ax.spines["bottom"].set_visible(False)    
ax.spines["right"].set_visible(False)    
ax.spines["left"].set_visible(False) 


# Ensure that the axis ticks only show up …
Run Code Online (Sandbox Code Playgroud)

python datetime graph matplotlib axis-labels

7
推荐指数
1
解决办法
8996
查看次数

AngularUI Datepicker禁用范围之外的日期

我想将Angular UI Datepicker限制在作为变量传入的两个日期之间.我希望在不添加像momentjs这样的库的情况下让它工作,因为这是我需要处理日期的唯一字段.

这是这个问题的一个问题:

http://plnkr.co/edit/zsjpoVZtHqJLIP2RW6vm?p=preview

这是变量:

mycurrentdate = '2016-04-18'
mymindate = '2016-04-01'
mymaxmonth = '2016-05-01'
mymaxdate will be calculated from mymaxmonth to be
mymaxdate = '2016-05-31'
Run Code Online (Sandbox Code Playgroud)

我的实际最大日期将是mymaxmonth的最后一天

$scope.maxDate = new Date(
                    $scope.mymaxmonth + (TO THE END OF THE MONTH)
                );
Run Code Online (Sandbox Code Playgroud)

需要注意的一点是,运行它会new Date()返回给定日期前一天的日期.例如:

$scope.minDate = new Date(
                    $scope.mymindate
                );
Run Code Online (Sandbox Code Playgroud)

$ scope.minDate返回Wed Mar 30 2016 17:00:00 GMT-0700 (PDT)我查找了为什么它返回3月30日而不是4月1日的原因,这似乎是时区错误?

我想设置一个'2016-04-01'的mymindate并获取mymaxdate ='2016-05-31'并禁用此范围之外的所有日期.我已经阅读了Javascript日期和时间初学者指南,并在此处进行了尝试.

在控制器中我有:

$scope.mymindate = '2016-04-01';
$scope.mymaxmonth = '2016-05-01'; //want mymaxdate to be '2016-05-31'

 $scope.minDate = new Date($scope.dt.getFullYear(), …
Run Code Online (Sandbox Code Playgroud)

javascript date datepicker angularjs angularjs-controller

6
推荐指数
2
解决办法
285
查看次数

按一列中出现的频率对整个csv进行排序

我有一个大的csv文件,它是调用者数据的日志.

我文件的简短片段:

CompanyName    High Priority     QualityIssue
Customer1         Yes             User
Customer1         Yes             User
Customer2         No              User
Customer3         No              Equipment
Customer1         No              Neither
Customer3         No              User
Customer3         Yes             User
Customer3         Yes             Equipment
Customer4         No              User
Run Code Online (Sandbox Code Playgroud)

我想按照客户出现的频率对整个列表进行排序,这样就像:

CompanyName    High Priority     QualityIssue
Customer3         No               Equipment
Customer3         No               User
Customer3         Yes              User
Customer3         Yes              Equipment
Customer1         Yes              User
Customer1         Yes              User
Customer1         No               Neither
Customer2         No               User
Customer4         No               User
Run Code Online (Sandbox Code Playgroud)

我尝试过groupby,但是只打印出公司名称和频率而不是其他列,我也试过了

df['Totals']= [sum(df['CompanyName'] == df['CompanyName'][i]) for i in xrange(len(df))]
Run Code Online (Sandbox Code Playgroud)

df = [sum(df['CompanyName'] == df['CompanyName'][i]) …
Run Code Online (Sandbox Code Playgroud)

python csv sorting frequency pandas

5
推荐指数
3
解决办法
3426
查看次数

使用无效字符(重音符号)将CSV文件读入Pandas Dataframe

我正在尝试将csv文件读入pandas数据帧.但是,csv包含重音符号.我使用的是Python 2.7

我遇到了一个UnicodeDecodeError因为第一列有重音.我已经在很多网站上阅读过这样的关于CSV文件中UTF-8的问题,这篇关于与新行相关的CSV错误的博客文章,以及关于Python 2.7中UTF-8问题的博客文章.

我使用了从那里找到的答案来尝试修改我的代码.原来我有:

import pandas as pd

#Create a dataframe with the data we are interested in
df = pd.DataFrame.from_csv('MYDATA.csv')
mode = lambda ts: ts.value_counts(sort=True).index[0]
cols = df['CompanyName'].value_counts().index
df['Calls'] = df.groupby('CompanyName')['CompanyName'].transform(pd.Series.value_counts)
Run Code Online (Sandbox Code Playgroud)

Excetera.它工作,但现在传递"NÍ"和"Nê"作为客户名称给出错误:

UnicodeDecodeError: 'utf8' codec can't decode byte 0xea in position 7: invalid continuation byte
Run Code Online (Sandbox Code Playgroud)

我尝试将行更改为df = pd.read_csv('MYDATA.csv',encoding ='utf-8')但这会产生相同的错误.

所以我从研究发现的建议中尝试了这个,但它也没有用,我得到了同样的错误.

import pandas as pd
import csv

def unicode_csv_reader(utf8_data, dialect=csv.excel, **kwargs):
    csv_reader = csv.reader(utf8_data, dialect=dialect, **kwargs)
    for row in csv_reader: …
Run Code Online (Sandbox Code Playgroud)

python csv utf-8 dataframe pandas

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

从Pandas中的DatetimeIndex制作月份和年份列表

我有一个信息数据框.我将索引设置为收到的日期和时间.现在我想要一份清单

我设置df索引:

df.index = pd.to_datetime(df.index, format='%m/%d/%Y %H:%M')
Run Code Online (Sandbox Code Playgroud)

这给了我这个:

print df.index
<class 'pandas.tseries.index.DatetimeIndex'>
[2014-07-28 09:42:08, ..., 2015-07-28 09:06:12]
Length: 15177, Freq: None, Timezone: None
Run Code Online (Sandbox Code Playgroud)

我想要一个月份和年份的列表,以便使用它们进行绘图,如下所示: ["Jan 2015", "Feb 2015", "Mar 2015", "Apr 2015", "May 2015", "June 2015", "Jul 2015", "Aug 2014", "Sep 2014", "Oct 2014", "Nov 2014", "Dec 2014"]

我怎样才能做到这一点?我调查过这样的事情:

df = [datetime.datetime.strftime(n,'%b-%Y') for n in pd.DataFrame(df).resample('M').index] 
Run Code Online (Sandbox Code Playgroud)

但这给了我错误DataError: No numeric types to aggregate.

python list strftime dataframe pandas

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

在 Tkinter 的输入框中设置默认值

我正在 Python 中使用 Tkinter 创建一个用户输入框。我从这里得到了基本代码:http ://www.python-course.eu/tkinter_entry_widgets.php

其中规定:

from tkinter import *

def show_entry_fields():
   print("First Name: %s\nLast Name: %s" % (e1.get(), e2.get()))

master = Tk()
Label(master, text="First Name").grid(row=0)
Label(master, text="Last Name").grid(row=1)

e1 = Entry(master)
e2 = Entry(master)

e1.grid(row=0, column=1)
e2.grid(row=1, column=1)

Button(master, text='Quit', command=master.quit).grid(row=3, column=0, sticky=W, pady=4)
Button(master, text='Show', command=show_entry_fields).grid(row=3, column=1, sticky=W, pady=4)

mainloop( )
Run Code Online (Sandbox Code Playgroud)

并根据我的目的对其进行了修改。我的问题是在输入中设置默认变量。

我已经查看了所有内容,似乎常见的解决方案是使用 v = Tkinter.StringVar() 和 v.set("Default")。但是,我使用的是整数,所以我将其更改为:

v = Tkinter.IntVar()
e1 = Entry(master)
v.set(pd.value_counts(df['month'].values, sort=False)[1])
Run Code Online (Sandbox Code Playgroud)

在哪里

In [29]: pd.value_counts(df['month'].values, sort=False)[1]
Out[29]: 247
Run Code Online (Sandbox Code Playgroud)

我的代码可以运行,但输入中没有默认值。

python user-input tkinter widget set

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

使用 pyODBC 连接到 ODBC

我已经阅读了 python odbc 库中的所有常见问题解答页面以及其他示例,并使用以下代码设法连接到了 DSN:

cnxn = pyodbc.connect("DSN=DSNNAME")
cursor = cnxn.cursor()
cursor.tables()
rows = cursor.fetchall()
for row in rows:
    print row.table_name
Run Code Online (Sandbox Code Playgroud)

但对于其他一切,我不断收到此错误:

Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过以下步骤使用 Microsoft Access 提取我的数据:创建新数据库,单击外部数据选项卡,单击更多并选择 ODBC 数据库,通过创建链接表使用数据源链接,在选择数据源窗口中选择机器数据源并选择具有系统类型的 NAME2,按确定并选择表 acr.Table_one_hh,然后选择表中我想查看的字段,如城市、州、国家、地区等。当我将鼠标悬停在表名称上时,它会显示 DSN 名称、描述、可信连接 = 是、APP、数据库名称和表名称。

我尝试了两种方法,首先

cnxn = pyodbc.connect('DRIVER={SQL Server Native Client 10.0};SERVER=mycomputername;DATABASE=mydatabase;Trusted_Connection=yes;')
cursor = cnxn.cursor()
Run Code Online (Sandbox Code Playgroud)

这给出了一个错误:

Error: ('08001', '[08001] [Microsoft][SQL Server Native Client 10.0]Named Pipes Provider: Could not open a connection to …
Run Code Online (Sandbox Code Playgroud)

python ms-access odbc dsn pyodbc

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

将列相加并选择总和最大的列

我正在寻找对数据框进行排序。我有这个数据框:

Y    X1  X2  X3
Y1   1   0   1
Y2   1   0   0
Y3   1   0   0
Y4   0   1   0
Run Code Online (Sandbox Code Playgroud)

有很多列。如果您将列相加,我想选择总和最大的 X 值。

我一直在尝试通过添加一行来做到这一点,如下所示:

Y    X1  X2  X3
Y1   1   0   1
Y2   1   0   0
Y3   1   0   0
Y4   0   1   1
sum  3   1   2
Run Code Online (Sandbox Code Playgroud)

然后我会按总和行对其进行排序

Y    X1  X3  X2
Y1   1   1   0
Y2   1   0   0
Y3   1   0   0
Y4   0   1   1
sum  3   2   1
Run Code Online (Sandbox Code Playgroud)

并选择要使用的 30 列。但是,我只能得到行的总和,如下所示:

Y    X1  X3 …
Run Code Online (Sandbox Code Playgroud)

python sorting sum dataframe pandas

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