我正在使用MultiIndexed pandas DataFrame,并希望将DataFrame的子集乘以一定数量.
它与此相同,但具有MultiIndex.
>>> d = pd.DataFrame({'year':[2008,2008,2008,2008,2009,2009,2009,2009],
'flavour':['strawberry','strawberry','banana','banana',
'strawberry','strawberry','banana','banana'],
'day':['sat','sun','sat','sun','sat','sun','sat','sun'],
'sales':[10,12,22,23,11,13,23,24]})
>>> d = d.set_index(['year','flavour','day'])
>>> d
sales
year flavour day
2008 strawberry sat 10
sun 12
banana sat 22
sun 23
2009 strawberry sat 11
sun 13
banana sat 23
sun 24
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.但是,让我说我发现星期六的数字只是他们应该的一半!我想将所有sat销售额乘以2.
我的第一次尝试是:
sat = d.xs('sat', level='day')
sat = sat * 2
d.update(sat)
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为变量sat已经失去day了索引的级别:
>>> sat
sales
year flavour
2008 strawberry 20
banana 44
2009 strawberry 22
banana 46 …Run Code Online (Sandbox Code Playgroud) 我想将CSV列表读入数据帧.但是,我在捕获文件具有与数据本身不匹配的标题行(即元数据或其他空行)时发生的错误时遇到问题.此错误是'CParserError'(请参阅底部的错误消息).
我目前的解决方案是使用try-except语句
try:
#read file
except CParserError:
#give me an error message
Run Code Online (Sandbox Code Playgroud)
但是,这失败并出现以下错误:
NameError: name 'CParserError' is not defined
Run Code Online (Sandbox Code Playgroud)
我的代码如下.正如您所看到的,我认为我需要多个except语句来捕获各种错误.第一个应检查默认编码类型是否有效(文件永远不会是utf-8或latin-1以外的任何文件).如果有标题行,pd.read_csv会给出一个'CParserError'消息(见下文),我需要捕获它.然后,如果还有其他杂项问题,我也想抓住这些问题.
任何解决方案都欢迎,理想情况下可以解释为什么CParserError不正确,或者是否可以修改try-except逻辑以避免依赖于此.
谢谢.
files_list = glob.glob('*.csv*') #get all csvs
files_dict = {}
for file in files_list:
try:
files_dict[file] = pd.read_csv('DFA_me_week27.csv', encoding='utf-8').read()
except UnicodeDecodeError:
files_dict[file] = pd.read_csv('DFA_me_week27.csv', encoding='Latin-1').read()
except CParserError:
print(file, 'failed: check for header rows')
except:
print(file, 'failed: some other error occurred')
Run Code Online (Sandbox Code Playgroud)
尝试使用标头解析CSV文件时出现错误消息:
CParserError Traceback (most recent call last)
<ipython-input-15-e454c053d675> in <module>()
----> 1 pd.read_csv('DFA_me_week27.csv')
C:\Users\john.lwli\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\io\parsers.py in parser_f(filepath_or_buffer, sep, dialect, compression, …Run Code Online (Sandbox Code Playgroud) 在Python 2.7中,如何在具有固定数量元素的范围上创建列表,而不是在每个元素之间固定步长?
>>> # Creating a range with a fixed step between elements is easy:
>>> range(0, 10, 2)
[0, 2, 4, 6, 8]
>>> # I'm looking for something like this:
>>> foo(0, 10, num_of_elements=4)
[0.0, 2.5, 5, 7.5]
Run Code Online (Sandbox Code Playgroud) 我想表示当前数据集与客户计算的先前数据集之间的差异.
想象一下,我已经有三个圈子,绑定到数据[1, 2, 3].现在我想更新数据并根据新值和旧值之间的差异做些什么?
var new_data = [2, 2, 2]; // This is the new data I'd like to compare with the old
svg.selectAll("circle").data(new_data)
.transition().duration(2000)
.attr("fill", "red") // e.g. I'd like to colour the circles red if the change
// is negative, blue if positive, black if no change.
.attr("r", function(d) { return d * 10; });
Run Code Online (Sandbox Code Playgroud)
这是一个JSFiddle,将上面的代码设置为一个例子.
我无法显示来自的情节ggplot.我尝试过类似的东西
import pandas as pd
import pylab as plt
import statsmodels.api as sm
from ggplot import *
df = pd.DataFrame.from_csv('file.csv', index_col=None)
x=df['X']
y=df['Y']
plt=ggplot(data=df,aes(x=x, y=y)) +\
geom_line() +\
stat_smooth(colour='blue', span=0.2)
plt.show()
Run Code Online (Sandbox Code Playgroud)
为什么不出现?
根据这个Rich Display System的例子,Jupyter笔记本可以使用%%latex细胞魔法显示乳胶.
使用align环境给出的示例在我的system(Notebook Server 3.2.0-8b0eef4)上运行正常,但是当我尝试显示a tabular或a时table,结果就是很好地排版Latex代码!
我需要添加一些序言来使这项工作成功吗?
我对 Python 很陌生,我们有一个应用程序容器和一个数据库容器。应用程序容器从 CLI 收集 DB_HOST、PORT 等值,并尝试在同一 Docker 主机上运行的容器化 Postgres DB 上创建表空间。
在执行查询时,我们收到以下错误。
psycopg2.errors.ActiveSqlTransaction: CREATE TABLESPACE cannot run inside a transaction block
Run Code Online (Sandbox Code Playgroud)
使用的Python库:
psycopg2psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT应用程序文档示例
FROM python:3.7-alpine
RUN apk update && \
apk add --no-cache openssh sshpass && \
apk add --no-cache --virtual .build-deps gcc musl-dev && \
apk add linux-headers && \
apk add python3-dev && \
apk add postgresql-dev && \
apk add postgresql-client && \
apk add bash && \
apk add libffi-dev make …Run Code Online (Sandbox Code Playgroud) 每当我Build & Reload从RStudio的Build窗格运行时,我都会收到消息
==> Rcmd.exe INSTALL --no-multiarch rwiots
Error: contains a blank line
Run Code Online (Sandbox Code Playgroud)
事实上,当我看时,我的DESCRIPTION文件在Suggests字段中包含一个空行.如果我删除它,它会在我尝试时再次创建Build & Reload.
我Generate documentation with Roxygen勾选了选项,并在Configure...对话框中勾选了所有框.
我非常喜欢使用roxygen2记录我的函数并让RStudio构建我的NAMESPACE文件和我的DESCRIPTION文件的部分工作流程.那么我怎样才能解决这个非常奇怪的小问题呢?
非常感谢Rob Levy
是否可以使用字典对列的元素进行分组?
例如:
In [3]: df = pd.DataFrame({'A' : ['one', 'one', 'two', 'three','two', 'two', 'one', 'three'],
...: 'B' : np.random.randn(8)})
In [4]: df
Out[4]:
A B
0 one 0.751612
1 one 0.333008
2 two 0.395667
3 three 1.636125
4 two 0.916435
5 two 1.076679
6 one -0.992324
7 three -0.593476
In [5]: d = {'one':'Start', 'two':'Start', 'three':'End'}
In [6]: grouped = df[['A','B']].groupby(d)
Run Code Online (Sandbox Code Playgroud)
此(和其他变体)返回一个空的 groupby 对象。我对使用的各种变体.apply也都失败了。
我想将列的值A与字典的键相匹配,并将行放入由值定义的组中。输出看起来像这样:
Start:
A B
0 one 0.751612
1 one 0.333008
2 two …Run Code Online (Sandbox Code Playgroud) python ×6
pandas ×3
python-3.x ×2
chdir ×1
d3.js ×1
ggplot2 ×1
javascript ×1
latex ×1
postgres-12 ×1
psycopg2 ×1
python-2.7 ×1
r ×1
range ×1
roxygen2 ×1
rstudio ×1
unix ×1