我有一个很空的数据帧,格式很差的日期我转换成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) 所以我有一个数据框,其中包含我想要解决的一些错误信息:
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) 我有一个带有非唯一索引的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)
我想大熊猫会有这样的功能,但没有找到任何东西
当在内存中查询数据形成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查询,但为了这个目的,我想尝试这种方式)