我需要一个过滤货币字段的指令,因此用户只需要输入并隐含小数.
需求:
用户输入时从百分位开始.所以他们输入"4"并看"0.04",输入"42"并看"0.42",输入298023并看"2980.23"
-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) 我的代码中出现错误,因为我试图通过调用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制作一个视觉上吸引人的图形.我在这里使用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) 我想将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) 我有一个大的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) 我正在尝试将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) 我有一个信息数据框.我将索引设置为收到的日期和时间.现在我想要一份清单
我设置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 中使用 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 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) 我正在寻找对数据框进行排序。我有这个数据框:
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 ×8
pandas ×5
dataframe ×4
angularjs ×2
csv ×2
javascript ×2
sorting ×2
axis-labels ×1
currency ×1
date ×1
datepicker ×1
datetime ×1
dsn ×1
format ×1
frequency ×1
graph ×1
list ×1
matplotlib ×1
ms-access ×1
odbc ×1
pyodbc ×1
set ×1
strftime ×1
strip ×1
sum ×1
tkinter ×1
user-input ×1
utf-8 ×1
whitespace ×1
widget ×1