小编jes*_*WUT的帖子

Pandas any()返回false并显示真值

我有一个很空的数据帧,格式很差的日期我转换成DateTime格式.

from io import StringIO

data = StringIO("""issue_date,issue_date_dt
,
,
19600215.0,1960-02-15
,
,""")

df = pd.read_csv(data, parse_dates=[1])
Run Code Online (Sandbox Code Playgroud)

哪个产生

    issue_date  issue_date_dt
0   NaN         NaT
1   NaN         NaT
2   19600215.0  1960-02-15
3   NaN         NaT
4   NaN         NaT
Run Code Online (Sandbox Code Playgroud)

我希望我可以使用df.any()来查找行或列中是否有值.axis=0表现如预期:

df.any(axis=0)

issue_date       True
issue_date_dt    True
dtype: bool
Run Code Online (Sandbox Code Playgroud)

但是axis=1只对所有行返回false.

df.any(axis=1)

0    False
1    False
2    False
3    False
4    False
dtype: bool
Run Code Online (Sandbox Code Playgroud)

python datetime pandas

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

Python Pandas Groupby基于索引重置值

所以我有一个数据框,其中包含我想要解决的一些错误信息:

import pandas as pd
tuples_index = [(1,1990), (2,1999), (2,2002), (3,1992), (3,1994), (3,1996)]
index = pd.MultiIndex.from_tuples(tuples_index, names=['id', 'FirstYear'])
df = pd.DataFrame([2007, 2006, 2006, 2000, 2000, 2000], index=index, columns=['LastYear'] )


df
Out[4]: 
              LastYear
id FirstYear          
1  1990           2007
2  1999           2006
   2002           2006
3  1992           2000
   1994           2000
   1996           2000
Run Code Online (Sandbox Code Playgroud)

id指的是一个业务,而这个DataFrame是一个较大的示例切片,它显示了业务的移动方式.每条记录都是一个独特的位置,我想捕捉它在那里的第一年和最后一年.目前的"LastYear"对于只有一个记录的企业是准确的,并且对于多个记录的最新业务记录是准确的.df最终应该是什么样的:

              LastYear
id FirstYear          
1  1990           2007
2  1999           2002
   2002           2006
3  1992           1994
   1994           1996
   1996           2000
Run Code Online (Sandbox Code Playgroud)

而我所做的就是超级笨重:

multirecord = df.groupby(level=0).filter(lambda x: len(x) > 1)
multirecord_grouped = multirecord.groupby(level=0)

ls …
Run Code Online (Sandbox Code Playgroud)

python group-by pandas pandas-groupby

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

从非唯一索引Python Pandas创建唯一的MultiIndex

我有一个带有非唯一索引的pandas DataFrame:

index = [1,1,1,1,2,2,2,3]

df = pd.DataFrame(data = {'col1': [1,3,7,6,2,4,3,4]}, index=index)

df
Out[12]: 
   col1
1     1
1     3
1     7
1     6
2     2
2     4
2     3
3     4
Run Code Online (Sandbox Code Playgroud)

我想把它变成唯一的MultiIndex并保留顺序,如下所示:

        col1
  Ind2      
1 0        1
  1        3
  2        7
  3        6
2 0        2
  1        4
  2        3
3 0        4
Run Code Online (Sandbox Code Playgroud)

我想大熊猫会有这样的功能,但没有找到任何东西

python pandas

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

使用HDF5和Pandas通过分块读取数据

当在内存中查询数据形成CSV的子集时,我总是这样做:

df = pd.read_csv('data.csv', chunksize=10**3)

chunk1 = df.get_chunk()
chunk1 = chunk1[chunk1['Col1'] > someval]

for chunk in df:
    chunk1.append(chunk[chunk['Col1'] >someval])
Run Code Online (Sandbox Code Playgroud)

我最近开始玩HDF5,因为TableIterator对象没有get_chunk()方法或接受,所以无法做到这一点next().

df = pd.read_hdf('data.h5', chunksize=10**3)
df.get_chunk()
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-19-xxxxxxxx> in <module>()
----> 1 df.get_chunk()

AttributeError: 'TableIterator' object has no attribute 'get_chunk'
Run Code Online (Sandbox Code Playgroud)

任何解决方法的想法?(我知道我可以使用pandas从磁盘上的hdf5查询,但为了这个目的,我想尝试这种方式)

python hdf5 pytables python-2.7 pandas

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