小编Ame*_*ina的帖子

IPython和matplotlib配置配置文件和文件

随着时间的推移,我已经看到使用两个位置配置文件的IPython(和等效的matplotlib):

~/.ipython/profile_default/

~/.config/ipython/profile_default

哪个是正确的?这两个包检查两者吗?

如果它很重要,我在OS X和Linux上使用Anaconda

python matplotlib ipython

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

使用iterrows时的持久性问题()

我相信有人也在这个帖子中报告过,填写数据框 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.

python pandas

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

df.reindex()和df.loc []之间的区别

假设我想计算两个MultiIndex数据帧之间的相对补码 df2 - df1.假设它们具有相同的索引模式,基于我在Andy Hayden的回答中所看到的,我可以执行以下操作:

diff_indices = df2.index - df1.index
Run Code Online (Sandbox Code Playgroud)

然后是:

  1. df2.reindex(diff_indices, inplace=True)

    要么

  2. df2 = df2.loc[diff_indices]

1.和2.上面的区别是什么?df.reindex和之间有什么区别df.loc?

python pandas

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

用NaN替换Inf会导致AttributeError

我在熊猫身上有一个奇怪的问题.我想替换任何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)

python pandas

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

条件为真的索引.效率和简洁

假设我有一个数据帧:

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)

这让我想知道:

  1. 以上是检索这些指数的最有效方法吗?请注意,上面的代码创建了True/False值的临时副本,使用此输出索引数据帧,然后检索生成的视图的索引.

  2. 是否有更简洁的方式来运行此查询?例如, idxmin()允许一个人直接查询索引的最小值(一个方法调用).是否有任何等价物来检索条件所在的指数True?例如:

    data_frame_with_a_long_name['column' == 'A'].true_indices()
    
    Run Code Online (Sandbox Code Playgroud)

python pandas

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

没有任何Numpy阵列

我有一个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),都返回原始结构)

python arrays numpy pandas

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

具有亚秒(例如ms)分辨率的to_datetime

我有一个系列,将时间戳保存为字符串,如下所示:

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对象的最佳方法是什么?

python numpy pandas

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

使用最新值进行插值

(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值。

python numpy scipy

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

在Perl中构建和打印多维列表而不进行循环

这篇文章的最佳答案:如何在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是否支持任何语法来构建没有嵌套循环的多维数组?

同样,有没有办法在没有(嵌套)循环的情况下打印多维数组?

perl multidimensional-array

0
推荐指数
1
解决办法
364
查看次数

numpy.delete 使我的数组变平

假设我执行以下操作:

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, [])不会使我的数组变平?

python numpy multidimensional-array

0
推荐指数
1
解决办法
838
查看次数