小编JJ *_*ica的帖子

熊猫总和两列,跳过NaN

如果我添加两列来创建第三列,那么任何包含NaN(代表我的世界中缺少数据)的列都会导致生成的输出列也是NaN.有没有办法在没有明确地将值设置为0的情况下跳过NaN(这会失去那些值"缺失"的概念)?

In [42]: frame = pd.DataFrame({'a': [1, 2, np.nan], 'b': [3, np.nan, 4]})

In [44]: frame['c'] = frame['a'] + frame['b']

In [45]: frame
Out[45]: 
    a   b   c
0   1   3   4
1   2 NaN NaN
2 NaN   4 NaN
Run Code Online (Sandbox Code Playgroud)

在上面,我希望列c为[4,2,4].

谢谢...

python pandas

25
推荐指数
3
解决办法
2万
查看次数

重新采样分钟数据

我在开放范围/第一小时(美国东部时间上午9:30-10:30)有基于分钟的OHLCV数据.我想重新采样这些数据,这样我可以获得一个60分钟的值,然后计算范围.

当我在数据上调用dataframe.resample()函数时,我得到两行,初始行在上午9:00开始.我期待只有一行从上午9:30开始.

注意:初始数据从9:30开始.

在此输入图像描述

编辑:添加代码:

# Extract data for regular trading hours (rth) from the 24 hour data set
rth = data.between_time(start_time = '09:30:00', end_time = '16:15:00', include_end = False)

# Extract data for extended trading hours (eth) from the 24 hour data set
eth = data.between_time(start_time = '16:30:00', end_time = '09:30:00', include_end = False)

# Extract data for initial balance (rth) from the 24 hour data set
initial_balance = data.between_time(start_time = '09:30:00', end_time = '10:30:00', include_end =      False)
Run Code Online (Sandbox Code Playgroud)

卡住试图按个别日期分开开盘范围并获得初始余额

conversion …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

重新索引数据帧

我有一个数据框.然后我有一个逻辑条件,通过删除一些行我创建另一个数据框.但是,新数据框会跳过已删除行的索引.如何在不跳过的情况下顺序重新索引?这是一个编码澄清的样本

import pandas as pd
import numpy as np

jjarray = np.array(range(5))
eq2 = jjarray == 2
neq2 = np.logical_not(eq2)

jjdf = pd.DataFrame(jjarray)
jjdfno2 = jjdf[neq2]

jjdfno2
Run Code Online (Sandbox Code Playgroud)

日期:

  0
0 0
1 1
3 3
4 4
Run Code Online (Sandbox Code Playgroud)

我希望它看起来像这样:

  0
0 0
1 1
2 3
3 4
Run Code Online (Sandbox Code Playgroud)

谢谢.

python dataframe pandas

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

如何设置pandas数据帧数据左/右对齐?

pd.set_option("display.colheader_justify","right")用来设置列标题.但我无法找到数据选项pd.describe_option().

如何设置数据框内的数据显示每列的左对齐或右对齐?或者,是否可以为整个行数据显示定义格式模板?

python pandas

23
推荐指数
5
解决办法
3万
查看次数

重命名未命名的列pandas数据帧

我的csv文件没有第一列的列名,我想重命名它.通常,我会这样做data.rename(columns={'oldname':'newname'}, inplace=True),但csv文件中没有名称,只是''.

python csv pandas

23
推荐指数
7
解决办法
4万
查看次数

制作更大尺寸的图表

我想要一个更大的图表.但是,matplotlib中的figure方法似乎不能正常工作.

我收到一条消息,这不是错误:

import pandas.io.data as web
import pandas as pd
import matplotlib.pyplot as plt

%matplotlib inline
...
plt.figure(figsize=(20,10))
df2['media']= df2['SPY']*.6 + df2['TLT']*.4
df2.plot()
plt.show()
Run Code Online (Sandbox Code Playgroud)

我的代码出了什么问题?

python matplotlib pandas

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

每次为Pandas DataFrame获取相同的哈希值

我的目标是为DataFrame获取唯一的哈希值.我从.csv文件中获取它.整点是每次调用hash()时获取相同的哈希值.

我的想法是我创建了这个功能

def _get_array_hash(arr):
    arr_hashable = arr.values
    arr_hashable.flags.writeable = False
    hash_ = hash(arr_hashable.data)
    return hash_
Run Code Online (Sandbox Code Playgroud)

即调用底层numpy数组,将其设置为不可变状态并获取缓冲区的哈希值.

INLINE UPD.

截至2016年11月8日,此版本的功能不再起作用.相反,你应该使用

hash(df.values.tobytes())
Run Code Online (Sandbox Code Playgroud)

请参阅针对numpy数组最有效属性的注释.

内联UPD结束.

它适用于常规pandas数组:

In [12]: data = pd.DataFrame({'A': [0], 'B': [1]})

In [13]: _get_array_hash(data)
Out[13]: -5522125492475424165

In [14]: _get_array_hash(data)
Out[14]: -5522125492475424165 
Run Code Online (Sandbox Code Playgroud)

但后来我尝试将它应用于从.csv文件中获取的DataFrame:

In [15]: fpath = 'foo/bar.csv'

In [16]: data_from_file = pd.read_csv(fpath)

In [17]: _get_array_hash(data_from_file)
Out[17]: 6997017925422497085

In [18]: _get_array_hash(data_from_file)
Out[18]: -7524466731745902730
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下,这怎么可能?

我可以创建新的DataFrame,比如

new_data = pd.DataFrame(data=data_from_file.values, 
            columns=data_from_file.columns, 
            index=data_from_file.index)
Run Code Online (Sandbox Code Playgroud)

它再次有效

In [25]: _get_array_hash(new_data)
Out[25]: -3546154109803008241

In …
Run Code Online (Sandbox Code Playgroud)

python pandas

22
推荐指数
3
解决办法
9588
查看次数

TypeError:pivot_table()得到一个意外的关键字参数'rows'

我正在尝试使用pandas DataFrame的pivot_table方法;

mean_ratings = data.pivot_table('rating', rows='title', cols='gender', aggfunc='mean')
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-55-cb4d494f2f39> in <module>()
----> 1 mean_ratings = data.pivot_table('rating', rows='title', cols='gender', aggfunc='mean')

TypeError: pivot_table() got an unexpected keyword argument 'rows'
Run Code Online (Sandbox Code Playgroud)

以上命令取自Wes McKinney(熊猫的创造者)的" Python for Data Analysis " 一书

python pandas

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

如何使用多列参数调用pandas.rolling.apply?

我有一个数据集:

    Open     High      Low    Close        
0  132.960  133.340  132.940  133.105
1  133.110  133.255  132.710  132.755
2  132.755  132.985  132.640  132.735 
3  132.730  132.790  132.575  132.685
4  132.685  132.785  132.625  132.755
Run Code Online (Sandbox Code Playgroud)

我尝试对所有行使用rolling.apply函数,如下所示:

df['new_col']= df[['Open']].rolling(2).apply(AccumulativeSwingIndex(df['High'],df['Low'],df['Close']))
Run Code Online (Sandbox Code Playgroud)
  • 显示错误

要么

df['new_col']=  df[['Open', 'High', 'Low', 'Close']].rolling(2).apply(AccumulativeSwingIndex)
Run Code Online (Sandbox Code Playgroud)
  • 仅传递"打开"列中的参数

有谁能够帮我?

python pandas

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

计算两个系列之间的工作日

有没有比bdate_range()更好的方法来测量两个日期之间通过熊猫的工作日?

df = pd.DataFrame({ 'A' : ['1/1/2013', '2/2/2013', '3/3/2013'],
 'B': ['1/12/2013', '4/4/2013', '3/3/2013']})
print df
df['A'] = pd.to_datetime(df['A'])
df['B'] = pd.to_datetime(df['B'])
f = lambda x: len(pd.bdate_range(x['A'], x['B']))
df['DIFF'] = df.apply(f, axis=1)
print df
Run Code Online (Sandbox Code Playgroud)

输出:

          A          B
0  1/1/2013  1/12/2013
1  2/2/2013   4/4/2013
2  3/3/2013   3/3/2013
                    A                   B  DIFF
0 2013-01-01 00:00:00 2013-01-12 00:00:00     9
1 2013-02-02 00:00:00 2013-04-04 00:00:00    44
2 2013-03-03 00:00:00 2013-03-03 00:00:00     0
Run Code Online (Sandbox Code Playgroud)

谢谢!

python pandas

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

标签 统计

pandas ×10

python ×10

csv ×1

dataframe ×1

matplotlib ×1