Pandas 用大于和小于索引重新索引数据帧
Pandas reindex dataframe with greater and less than index
我有一个数据框 df1
作为:
idx Col1
2 v2
3 v3
4 v4
5 v5
我想为值 df1.reindex([1, 2, 3, 4, 5, 6])
重新索引 df1 以获得以下内容:
idx Col1
1 v2
2 v2
3 v3
4 v4
5 v5
6 v5
所有小于 2 的值都获得索引 2 的值,所有大于 5 的值都从数据帧获得索引 5 的值 df1
df1 = df1.reindex([1, 2, 3, 4, 5, 6]).ffill().bfill()
数据输入:
df1 = pd.DataFrame({'Col1': {2: 'v2', 3: 'v3', 4: 'v4', 5: 'v5'}}).rename_axis(index='idx')
Col1
idx
2 v2
3 v3
4 v4
5 v5
结果:
print(df1)
Col1
idx
1 v2
2 v2
3 v3
4 v4
5 v5
6 v5
编辑:
如果您的重新索引索引不按顺序,例如[2, 1, 4, 6, 5, 3]
您可以先 .sort_index()
然后 .ffill()
+ .bfill()
然后重新索引,如下所示:
df1.reindex([2, 1, 4, 6, 5, 3]).sort_index().ffill().bfill().reindex([2, 1, 4, 6, 5, 3])
结果:
Col1
idx
2 v2
1 v2
4 v4
6 v5
5 v5
3 v3
让我们在这里尝试注意我正在使用 nearest
和 sorted
out = df.reindex(sorted([1, 2, 3, 4, 5, 6]),method='nearest')
Out[105]:
Col1
idx
1 v2
2 v2
3 v3
4 v4
5 v5
6 v5
我有一个数据框 df1
作为:
idx Col1
2 v2
3 v3
4 v4
5 v5
我想为值 df1.reindex([1, 2, 3, 4, 5, 6])
重新索引 df1 以获得以下内容:
idx Col1
1 v2
2 v2
3 v3
4 v4
5 v5
6 v5
所有小于 2 的值都获得索引 2 的值,所有大于 5 的值都从数据帧获得索引 5 的值 df1
df1 = df1.reindex([1, 2, 3, 4, 5, 6]).ffill().bfill()
数据输入:
df1 = pd.DataFrame({'Col1': {2: 'v2', 3: 'v3', 4: 'v4', 5: 'v5'}}).rename_axis(index='idx')
Col1
idx
2 v2
3 v3
4 v4
5 v5
结果:
print(df1)
Col1
idx
1 v2
2 v2
3 v3
4 v4
5 v5
6 v5
编辑:
如果您的重新索引索引不按顺序,例如[2, 1, 4, 6, 5, 3]
您可以先 .sort_index()
然后 .ffill()
+ .bfill()
然后重新索引,如下所示:
df1.reindex([2, 1, 4, 6, 5, 3]).sort_index().ffill().bfill().reindex([2, 1, 4, 6, 5, 3])
结果:
Col1
idx
2 v2
1 v2
4 v4
6 v5
5 v5
3 v3
让我们在这里尝试注意我正在使用 nearest
和 sorted
out = df.reindex(sorted([1, 2, 3, 4, 5, 6]),method='nearest')
Out[105]:
Col1
idx
1 v2
2 v2
3 v3
4 v4
5 v5
6 v5