我有一个看起来像这样的大熊猫sim_df:
现在,我想添加另一列“日期”,它是与“现在”加“ cum_days”(增量时间)相对应的日期。
start = dt.datetime.now()
sim_df['date'] = start + dt.timedelta(sim_df['cum_days'])
Run Code Online (Sandbox Code Playgroud)
但是看起来deltatime不使用序列,而是使用固定的标量。
TypeError: unsupported type for timedelta days component: Series
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以在向量化的操作中解决此问题,而无需遍历sim_df的每一行?
我有其他人遇到类似问题的以下代码,但是提出的解决方案不适用于我的DataFrame。该代码从给定日期减去Pandas DataFrame索引:
my_date = pd.datetime.today()
MyDF['day_differential'] = (MyDF.index - my_date).days
Run Code Online (Sandbox Code Playgroud)
这在我的DataFrame中生成以下错误:
TypeError: Timestamp subtraction must have the same timezones or no timezones
Run Code Online (Sandbox Code Playgroud)
如何找到两个日期的tz?如何使它们相同,以便可以计算它们之间的天数?
我正在尝试使用Bokeh并混合代码片段.我从Pandas DataFrame创建了下面的图表,它使用我想要的所有工具元素正确显示图表.但是,工具提示部分显示数据.
这是图表:

这是我的代码:
from bokeh.plotting import figure, show
from bokeh.io import output_notebook
from bokeh.models import HoverTool
from collections import OrderedDict
x = yearly_DF.index
y0 = yearly_DF.weight.values
y1 = yearly_DF.muscle_weight.values
y2 = yearly_DF.bodyfat_p.values
#output_notebook()
p = figure(plot_width=1000, plot_height=600,
tools="pan,box_zoom,reset,resize,save,crosshair,hover",
title="Annual Weight Change",
x_axis_label='Year',
y_axis_label='Weight',
toolbar_location="left"
)
hover = p.select(dict(type=HoverTool))
hover.tooltips = OrderedDict([('Year', '@x'),('Total Weight', '@y0'), ('Muscle Mass', '$y1'), ('BodyFat','$y2')])
output_notebook()
p.line(x, y0, legend="Weight")
p.line(x, y1, legend="Muscle Mass", line_color="red")
show(p)
Run Code Online (Sandbox Code Playgroud)
我已经使用Firefox 39.0,Chrome 43.0.2357.130(64位)和Safari 8.0.7进行了测试.我已经清除了缓存,并且在所有浏览器中都出现了相同的错误.我也做了pip install bokeh --upgrade以确保我运行的是最新版本.
我有一个 df,在标有 url 的列中,对于不同的用户,它有数千个链接,如下所示:
https://www.google.com/something
https://mail.google.com/anohtersomething
https://calendar.google.com/somethingelse
https://www.amazon.com/yetanotherthing
Run Code Online (Sandbox Code Playgroud)
我有以下代码:
import urlparse
df['domain'] = ''
df['protocol'] = ''
df['domain'] = ''
df['path'] = ''
df['query'] = ''
df['fragment'] = ''
unique_urls = df.url.unique()
l = len(unique_urls)
i=0
for url in unique_urls:
i+=1
print "\r%d / %d" %(i, l),
split = urlparse.urlsplit(url)
row_index = df.url == url
df.loc[row_index, 'protocol'] = split.scheme
df.loc[row_index, 'domain'] = split.netloc
df.loc[row_index, 'path'] = split.path
df.loc[row_index, 'query'] = split.query
df.loc[row_index, 'fragment'] = split.fragment
Run Code Online (Sandbox Code Playgroud)
该代码能够正确解析和拆分 url,但速度很慢,因为我正在迭代 df 的每一行。有没有更有效的方法来解析 URL?
我有一个pandas数据框的子集,其中包含我想使用statsmodel使用AR或ARIMA模型分析的时间序列:
data_sci = H_Clinton_social_vector.Florida
Run Code Online (Sandbox Code Playgroud)
数据如下所示:
Date
2015-09-28 587
2015-10-05 582
2015-10-12 606
2015-10-19 698
Run Code Online (Sandbox Code Playgroud)
我的AR模型是这样创建的,每周汇总时间序列:
ar_model = sm.tsa.AR(data_sci, freq='W')
ar_model
<statsmodels.tsa.ar_model.AR at 0x1178f5490>
Run Code Online (Sandbox Code Playgroud)
接下来,我想对AR参数进行最大似然估计(MLE)拟合,半年滞后:
ar_res = ar_model.fit(maxlag=26, method='mle')
Run Code Online (Sandbox Code Playgroud)
我得到以下结果:
correlate() got an unexpected keyword argument 'old behavior'
Run Code Online (Sandbox Code Playgroud)
由于correlate()参数,我不明白问题是什么,我认为这与数据的自动关联有关.我的数据中有很高的自相关性,所以这应该没问题.
我对stasmodels不太熟悉,并且喜欢从头开始编码AR或ARIMA模型.
我试图理解可以在matplotlib radviz中使用的关键字参数.我使用着名的虹膜数据集,以及下面的简单代码:
import pandas as pd
plt.xkcd()
iris = pd.read_csv("iris.csv")
pd.tools.plotting.radviz(iris, "name")
Run Code Online (Sandbox Code Playgroud)
生成以下图表:
如何设置尺寸(x,y)和图表标题?如何指定图例的位置?还有什么其他参数(如果有的话)可用于radviz?
非常感谢您的帮助.
我有以下代码:
s1 = pd.DataFrame(np.random.uniform(-1,1,size=10))
s2 = pd.DataFrame(np.random.normal(-1,1, size=10))
s3 = pd.concat([s1, s2], axis=1)
s3.columns = ['s1','s2']
Run Code Online (Sandbox Code Playgroud)
这会生成如下所示的DF:
s1 s2
0 -0.841204 -1.857014
1 0.961539 -1.417853
2 0.382173 -1.332674
3 -0.535656 -2.226776
4 -0.854898 -0.644856
5 -0.538241 -2.178466
6 -0.761268 -0.662137
7 0.935139 0.475334
8 -0.622293 -0.612169
9 0.872111 -0.880220
Run Code Online (Sandbox Code Playgroud)
如何通过现在时间的时间戳添加列(或替换索引0-9)?np数组的大小不一定是10
我在iPython笔记本上运行了一段代码,下载了一个JSON文件,然后将内容解析为Pandas DF.但是,如果我尝试检查DF,那么我会收到编码错误.
output = r.json()
columns_map = {'/people/person/date_of_birth': 'birth_date',
'/people/person/place_of_birth': 'birth_place',
'/people/person/gender': 'gender'}
dF = pd.DataFrame(output['result'])
dF.rename(columns=columns_map, inplace=True)
dF.to_csv('file.csv',encoding='utf-8')
Run Code Online (Sandbox Code Playgroud)
我可以从DF创建一个没有任何问题的CSV,但如果我输入
dF
Run Code Online (Sandbox Code Playgroud)
要从iPython笔记本内部检查dF,我得到:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1894: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
我无法找到在我的iPython笔记本中为matplotlib中的3d条形图设置cmap(或颜色)的正确方法.我可以在X和Y平面上正确设置我的图表(28 x 7标签),并带有一些随机Z值.该图很难解释,一个原因是x_data标签[1,2,3,4,5]的默认颜色都是相同的.
这是代码:
%matplotlib inline
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as npfig = plt.figure(figsize=(18,12))
ax = fig.add_subplot(111, projection='3d')
x_data, y_data = np.meshgrid(np.arange(5),np.arange(3))
z_data = np.random.rand(3,5).flatten()
ax.bar3d(x_data.flatten(),
y_data.flatten(),np.zeros(len(z_data)),1,1,z_data,alpha=0.10)
Run Code Online (Sandbox Code Playgroud)
产生以下图表:
我不想手动为标签x_data定义颜色.如何为x_data中的每个标签设置不同的"随机"cmap颜色,仍然保留
ax.bar3d
参数?以下是使用的变体
ax.bar
我安装了EPD Free 7.3.2,它运行正常,直到我想修改PATH指向我的Python脚本所在的位置.我放弃了它并恢复到我原来的.bash_profile文件.
# Setting PATH for EPD_free-7.3-2
# The orginal version is saved in .bash_profile.pysave
PATH = "/Library/Frameworks/Python.framework/Versions/Current/bin:${PATH}"
export PATH
Run Code Online (Sandbox Code Playgroud)
启动终端时,我得到了这个:
Last login: Thu Jan 3 08:50:20 on ttys000
-bash: PATH: command not found
Run Code Online (Sandbox Code Playgroud)
但是,我能够运行iPython以及EPD附带的所有lib没有问题.有人知道"PATH:命令未找到"的问题是什么?
我正在为我的游戏使用移相器,并且使用具有数据数组的JSON文件,游戏正在运行,但是当我导出我在Tiled上制作的自定义地图时,数据就像这样出来了:
"compression":"zlib", "data":"eJxjYBgF9AZ5QJwPxAVUNLMOiOuBuIGKZvYBcT8QT6CimaNgFIyCUUBPAACmvgR4",
"encoding":"base64",
Run Code Online (Sandbox Code Playgroud)
我希望它就像这样:
"data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
Run Code Online (Sandbox Code Playgroud)
我不知道为什么它这样的导出,它是我使用的工作JSON文件和我所做的唯一不同的东西.
python ×8
pandas ×7
numpy ×3
datetime ×2
json ×2
matplotlib ×2
3d ×1
bokeh ×1
encoding ×1
epd-python ×1
mplot3d ×1
osx-lion ×1
statsmodels ×1
tiled ×1
time-series ×1
urlparse ×1
utf-8 ×1