Python新手.
在R中,您可以使用dim(...)获取矩阵的维数.Python Pandas的数据框中的相应功能是什么?
我正在尝试两个数据帧之间的合并.每个数据框都有两个索引级别(日期,cusip).例如,在列中,某些列匹配两者(货币,adj日期).
通过索引合并这些的最佳方法是什么,但不要取两份货币和约会日期.
每个数据框是90列,所以我试图避免手动编写所有内容.
df: currency adj_date data_col1 ...
date cusip
2012-01-01 XSDP USD 2012-01-03 0.45
...
df2: currency adj_date data_col2 ...
date cusip
2012-01-01 XSDP USD 2012-01-03 0.45
...
Run Code Online (Sandbox Code Playgroud)
如果我做:
dfNew = merge(df, df2, left_index=True, right_index=True, how='outer')
Run Code Online (Sandbox Code Playgroud)
我明白了
dfNew: currency_x adj_date_x data_col2 ... currency_y adj_date_y
date cusip
2012-01-01 XSDP USD 2012-01-03 0.45 USD 2012-01-03
Run Code Online (Sandbox Code Playgroud)
谢谢!...
我用以下方法创建了一个文件:
store = pd.HDFStore('/home/.../data.h5')
Run Code Online (Sandbox Code Playgroud)
并使用以下方法存储一些表
store['firstSet'] = df1
store.close()
Run Code Online (Sandbox Code Playgroud)
我关闭了python并在一个清新的环境中重新打开.
如何重新打开此文件?
我去的时候:
store = pd.HDFStore('/home/.../data.h5')
Run Code Online (Sandbox Code Playgroud)
我收到以下错误.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/misc/apps/linux/python-2.6.1/lib/python2.6/site-packages/pandas-0.10.0-py2.6-linux-x86_64.egg/pandas/io/pytables.py", line 207, in __init__
self.open(mode=mode, warn=False)
File "/misc/apps/linux/python-2.6.1/lib/python2.6/site-packages/pandas-0.10.0-py2.6-linux-x86_64.egg/pandas/io/pytables.py", line 302, in open
self.handle = _tables().openFile(self.path, self.mode)
File "/apps/linux/python-2.6.1/lib/python2.6/site-packages/tables/file.py", line 230, in openFile
return File(filename, mode, title, rootUEP, filters, **kwargs)
File "/apps/linux/python-2.6.1/lib/python2.6/site-packages/tables/file.py", line 495, in __init__
self._g_new(filename, mode, **params)
File "hdf5Extension.pyx", line 317, in tables.hdf5Extension.File._g_new (tables/hdf5Extension.c:3039)
tables.exceptions.HDF5ExtError: HDF5 error back trace
File …Run Code Online (Sandbox Code Playgroud) 关于熊猫数据框的基本问题.我有一个带数据点的1x1数据帧,并且没有列标题(当前). df[0,0]不起作用,因为我认为它期待列名.另外,df.0不工作也不df[0,'']. df.ix[0,0]确实有效.
一般来说,我是否需要有一个列名?将列名与pandas数据帧一起使用是最佳做法吗?如果我的sql查询没有列标题,那么最好在那时添加它们吗?
谢谢您的帮助.
我正在使用pandas/python数据帧.我想做一个滞后减法.
我目前正在使用:
newCol = df.col - df.col.shift()
Run Code Online (Sandbox Code Playgroud)
这导致第一点出现NaN:
NaN
45
63
23
...
Run Code Online (Sandbox Code Playgroud)
第一个问题:这是这样做减法的最好方法吗?
第二:如果我想向这个新列添加一列(相同的行数).有没有办法可以让所有NaN的0用于计算?
例如:
col_1 =
Nan
45
63
23
col_2 =
10
10
10
10
new_col =
10
55
73
33
Run Code Online (Sandbox Code Playgroud)
并不是
NaN
55
73
33
Run Code Online (Sandbox Code Playgroud)
谢谢.
我有两个pandas数据帧:dfLeft和dfRight,日期为索引.
dfLeft:
cusip factorL
date
2012-01-03 XXXX 4.5
2012-01-03 YYYY 6.2
....
2012-01-04 XXXX 4.7
2012-01-04 YYYY 6.1
....
Run Code Online (Sandbox Code Playgroud)
dfRight:
idc__id factorR
date
2012-01-03 XXXX 5.0
2012-01-03 YYYY 6.0
....
2012-01-04 XXXX 5.1
2012-01-04 YYYY 6.2
Run Code Online (Sandbox Code Playgroud)
两者都有接近的形状 (121900,3)
我尝试了以下合并:
test = pd.merge(dfLeft, dfRight, left_index=True, right_index=True, left_on='cusip', right_on='idc__id', how = 'inner')
Run Code Online (Sandbox Code Playgroud)
这给了测试一个形状(60643500, 6).
关于这里出了什么问题的任何建议?我希望它基于date和cusip/idc_id进行合并.注意:对于这个例子,cusips排成一行,但实际上可能不是这样.
谢谢.
预期产出测试:
cusip factorL factorR
date
2012-01-03 XXXX 4.5 5.0
2012-01-03 YYYY 6.2 6.0
....
2012-01-04 XXXX 4.7 5.1
2012-01-04 YYYY 6.1 6.2
Run Code Online (Sandbox Code Playgroud) 我有一个df,我想抓住CUSIP下面最近的一行.
In [374]: df.head()
Out[374]:
CUSIP COLA COLB COLC
date
1992-05-08 AAA 238 4256 3.523346
1992-07-13 AAA NaN 4677 3.485577
1992-12-12 BBB 221 5150 3.24
1995-12-12 BBB 254 5150 3.25
1997-12-12 BBB 245 Nan 3.25
1998-12-12 CCC 234 5140 3.24145
1999-12-12 CCC 223 5120 3.65145
Run Code Online (Sandbox Code Playgroud)
我在用:
df = df.reset_index().groupby('CUSIP').last().reset_index.set_index('date')
Run Code Online (Sandbox Code Playgroud)
我要这个:
CUSIP COLA COLB COLC
date
1992-07-13 AAA NaN 4677 3.485577
1997-12-12 BBB 245 Nan 3.25
1999-12-12 CCC 223 5120 3.65145
Run Code Online (Sandbox Code Playgroud)
相反,我得到:
CUSIP COLA COLB COLC
date
1992-07-13 AAA 238 4677 …Run Code Online (Sandbox Code Playgroud) 我有一个数据框,我正在查看与每列相关的数据类型.
当我跑:
In [23]: df.dtype.descr
Out [24]: [(u'date', '<i8'), (u'open', '<f8'), (u'high', '<f8'), (u'low', '<f8'), (u'close', '<f8'), (u'volume', '<f8'), (u'dividend', '<f8'), (u'adj_factor', '<f8'), (u'split_factor', '<f8'), (u'liq', '<f8'), (u'currency', '|O')]
Run Code Online (Sandbox Code Playgroud)
我想将货币dtype设置为S7.我在做:
In [25]: dtype_new[-1] = (u'currency', "|S7")
In [26]: print dtype_new
Out [27]: [(u'date', '<i8'), (u'open', '<f8'), (u'high', '<f8'), (u'low', '<f8'), (u'close', '<f8'), (u'volume', '<f8'), (u'dividend', '<f8'), (u'adj_factor', '<f8'), (u'split_factor', '<f8'), (u'liq', '<f8'), (u'currency', '|S7')]
Run Code Online (Sandbox Code Playgroud)
它看起来是正确的格式.所以我试着把它放回我的df:
In [28]: df = df.astype(np.dtype(dtype_new))
Run Code Online (Sandbox Code Playgroud)
我收到错误:
TypeError('data type not understood',)
Run Code Online (Sandbox Code Playgroud)
我应该改变什么?谢谢.这是在我最近更新anaconda之前工作的,我不知道这个问题.谢谢.
调整:
df.dtype是
In [23]: …Run Code Online (Sandbox Code Playgroud) 我在pandas python DataFrame中有一个大的相关矩阵:df(342,342).
如何获取上三角形中所有数字的均值,sd等,不包括沿对角线的1?
谢谢.
我有一只熊猫df:
a b c
0 'k' 2 4
1 'l' 3 7
2 'm' 0 -3
3 'n' 4 4
Run Code Online (Sandbox Code Playgroud)
我有一个词:{'k':'kilo','l':'lima','m':'mike','n':'november'}
如何在我的df中创建一个新列,从dict中的那些键:
a b c new
0 'k' 2 4 'kilo'
1 'l' 3 7 'lima'
2 'm' 0 -3 'mike'
3 'n' 4 4 'november'
Run Code Online (Sandbox Code Playgroud)
谢谢.