随着时间的推移,我已经看到使用两个位置配置文件的IPython(和等效的matplotlib):
~/.ipython/profile_default/
~/.config/ipython/profile_default
哪个是正确的?这两个包检查两者吗?
如果它很重要,我在OS X和Linux上使用Anaconda
我相信有人也在这个帖子中报告过,填写数据框 iterrows()会导致持久性问题.例如,简单的事情:
my_dataframe = pd.DataFrame(np.NaN, index = xrange(5),columns=['foo', 'bar'])
for ix, row in my_dataframe.iterrows():
row['foo'] = 'Hello'
Run Code Online (Sandbox Code Playgroud)
导致数据帧没有变化:
> my_dataframe
foo bar
0 NaN NaN
1 NaN NaN
2 NaN NaN
3 NaN NaN
4 NaN NaN
Run Code Online (Sandbox Code Playgroud)
我没有任何警告,没有例外,等等.这是打算吗?这是一个错误吗?意?究竟发生了什么?
以上是最新稳定版的Pandas,0.13.1.
假设我想计算两个MultiIndex数据帧之间的相对补码 df2 - df1.假设它们具有相同的索引模式,基于我在Andy Hayden的回答中所看到的,我可以执行以下操作:
diff_indices = df2.index - df1.index
Run Code Online (Sandbox Code Playgroud)
然后是:
df2.reindex(diff_indices, inplace=True)
要么
df2 = df2.loc[diff_indices]
1.和2.上面的区别是什么?df.reindex和之间有什么区别df.loc?
我在熊猫身上有一个奇怪的问题.我想替换任何np.Inf具有该值的条目np.NaN.但是,当我这样做时:
df[df == np.Inf] = np.NaN
Run Code Online (Sandbox Code Playgroud)
我明白了:
AttributeError: 'float' object has no attribute 'view'
Run Code Online (Sandbox Code Playgroud)
产生错误的语句具体是:
df == np.Inf
Run Code Online (Sandbox Code Playgroud)
我想知道问题是我在具有混合类型的Dataframe上运行上面的内容(见dtypes下文).但如果是这种情况,我怎么能自动更换?
In: df.dtypes
Out:
Year int64
Week int64
item_name object
item_uid object
Algorithm object
item Start float64
item 1/4 float64
item 1/2 float64
item 3/4 float64
item Complete float64
Daily Nr Impressions float64
date datetime64[ns]
Weekly rate float64
dtype: object
Run Code Online (Sandbox Code Playgroud) 假设我有一个数据帧:
this_is_my_dataframe_with_a_long_name
Run Code Online (Sandbox Code Playgroud)
我想找到条件所在的指数True.例如,假设条件column等于value.
我知道我可以在技术上做到:
dataframe_with_a_long_name[dataframe_with_a_long_name['column'] =='A].index
Run Code Online (Sandbox Code Playgroud)
这让我想知道:
以上是检索这些指数的最有效方法吗?请注意,上面的代码创建了True/False值的临时副本,使用此输出索引数据帧,然后检索生成的视图的索引.
是否有更简洁的方式来运行此查询?例如, idxmin()允许一个人直接查询索引的最小值(一个方法调用).是否有任何等价物来检索条件所在的指数True?例如:
data_frame_with_a_long_name['column' == 'A'].true_indices()
Run Code Online (Sandbox Code Playgroud)我有一个pandas系列每个条目持有一个numpy数组(所有条目的长度相同),我想将其转换为2D numpy数组.我相信我已经读过,系列和数据框架在容纳容器时表现不佳,但长话短说,不幸的是,你通过调用np.histogram(.,.)[0]系列中的每个组得到的,这就是我所追求的(直方图的分布) ).
无论哪种方式,我想从我的系列中检索2D numpy数组.目前,如果我这样做,my_series.values()我得到这个:
array([array([0, 0, 0, ..., 1, 0, 0]), array([0, 0, 0, ..., 0, 0, 0]),
array([0, 0, 0, ..., 0, 0, 0]), ..., array([0, 0, 0, ..., 0, 0, 0]),
array([0, 0, 0, ..., 0, 0, 0]), array([0, 0, 0, ..., 0, 0, 0])], dtype=object)
Run Code Online (Sandbox Code Playgroud)
此线程中的解决方案在此处不起作用(np.array未自动将最终数据结构解析为2D数组).
如何从此数据结构中"展平"此2D数组?(注意:result.flatten()不做技巧,也不做np.array(result),都返回原始结构)
我有一个系列,将时间戳保存为字符串,如下所示:
404 02:59:34,787
626 10:04:09,622
668 11:10:52,190
796 14:40:32,032
1022 17:20:58,314
1035 17:47:55,895
1071 18:50:12,628
1075 19:20:19,642
8902 23:50:54,408
Name: my_time, Length: 9, dtype: object
Run Code Online (Sandbox Code Playgroud)
据我所知,我可以在技术上pd.to_datetime将其转换为一系列datetime对象.但是,看着strftime我没有看到任何支持亚秒级分辨率的格式规范(ms在我的例子中).
我错过了什么吗?将此Series字符串转换Series为datetime对象的最佳方法是什么?
(x,y)假设我有两个数组中的一组点,x并且y长度相同。
我想插入 的值y以获得 的新值x_new。但是,此插值应使用数组中的最后一个(如“先前看到的”)值。y
换句话说,插值
x = [0, 10, 15]
y = [1, 3, 6]
Run Code Online (Sandbox Code Playgroud)
在
x_new = [1, 2, 9, 14, 16]
Run Code Online (Sandbox Code Playgroud)
应该返回:
y_new = [1, 1, 1, 3, 6]
Run Code Online (Sandbox Code Playgroud)
我怎样才能在 numpy 中做到这一点?循环并手动检查前一个值是我唯一的选择吗?
的第一个元素y_new是1,这是因为它的关联x_new值为1,并且最大、小于 的1值为x,0其y值为1。
也许看待这个问题的最好方法是将x其视为时间值,我希望填写y_new最新的y值。
这篇文章的最佳答案:如何在Perl中创建多维数组?建议建立一个多维数组如下:
my @array = ();
foreach my $i ( 0 .. 10 ) {
foreach my $j ( 0 .. 10 ) {
push @{ $array[$i] }, $j;
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种方法可以更紧凑地构建数组并避免嵌套循环,例如使用类似的东西:
my @array = ();
my @other_array = (0 ... 10);
foreach my $i ( 0 .. 10 ) {
$array[$i] = @other_array; # This does not work in Perl
}
}
Run Code Online (Sandbox Code Playgroud)
Perl是否支持任何语法来构建没有嵌套循环的多维数组?
同样,有没有办法在没有(嵌套)循环的情况下打印多维数组?
假设我执行以下操作:
my_array = np.array([[1,2,3]])
my_new_array = np.delete(my_array, [])
Run Code Online (Sandbox Code Playgroud)
最后一行将转换my_array为:
my_new_array = np.array([1,2,3]) # It flattens the array one level
Run Code Online (Sandbox Code Playgroud)
这不是我所期望的。
如果相反,我有:
my_array = np.array([[1,2,3], [4,5,6]])
my_new_array = np.delete(my_array, [])
Run Code Online (Sandbox Code Playgroud)
我会得到:
my_new_array = np.array([[1,2,3], [4,5,6]])
Run Code Online (Sandbox Code Playgroud)
这是我所期望的。如何确保调用np.delete(my_array, [])不会使我的数组变平?