我有DataFrame
,我想添加一些不存在的行。我找到了.loc
方法,但这会在最后添加值,而不是按排序方式添加。例如
import numpy as np
import pandas as pd
dfi = pd.DataFrame(np.arange(6).reshape(3,2),columns=['A','B'])
>>> dfi
A B
0 0 1
1 2 3
2 4 5
[3 rows x 2 columns]
通过.loc
添加不存在的行:
dfi.loc[5,:] = 0
>>> dfi
A B
0 0 1
1 2 3
2 4 5
5 0 0
[3 rows x 2 columns]
到目前为止一切正常。但这是尝试添加另一行时发生的情况,索引小于最后一行:
dfi.loc[3,:] = 0
>>> dfi
A B
0 0 1
1 2 3
2 4 5
5 0 0
3 0 0
[3 rows x 2 columns]
我希望将行3
和2
之间的行5
放在一起。我可以每次按索引对DataFrame
进行排序,但这需要太长时间。还有另一种方式吗?
我的实际问题是考虑DataFrame
,其中索引是datetime
个对象。我没有把这个实现的全部细节放在这里,因为这会混淆我真正的问题:在DataFrame
中添加行,使得结果具有有序索引。
答案 0 :(得分:1)
如果您的索引几乎是连续的,那么此处和那里只会遗漏几个值。我想你可以试试以下,
In [15]:
df=pd.DataFrame(np.zeros((100,2)), columns=['A', 'B'])
df['A']=np.nan
df['B']=np.nan
In [16]:
df.iloc[[0,1,2]]=pd.DataFrame({'A': [0,2,4,], 'B': [1,3,5]})
df.iloc[5]=[0,0]
df.iloc[3]=0
print df.dropna()
A B
0 0 1
1 2 3
2 4 5
3 0 0
5 0 0
[5 rows x 2 columns]