我正在尝试在pandas数据帧中为每个组添加一些NaN行 . 基本上我想将每组填充为5行长 . 订购很重要 . 我有:
Rank id
0 1 a
1 2 a
2 3 a
3 4 a
4 5 a
5 1 c
6 2 c
7 1 e
8 2 e
9 3 e
我想要:
Rank id
0 1 a
1 2 a
2 3 a
3 4 a
4 5 a
5 1 c
6 2 c
7 NaN c
8 NaN c
9 NaN c
10 1 e
11 2 e
12 3 e
13 NaN e
14 NaN e
5 回答
使用
pd.crosstab
:输出:
另一种方法,假设
df
中的最大组大小正好为5 .完整说明:
concat和reindex
此解决方案不考虑
Rank
列中的值,仅在需要更多行时才添加更多行 .同样的答案措辞有点不同
factorize
此解决方案生成独特值的笛卡尔积
id
和Rank
您可以使用id和
pd.concat
的频率来合并重复,即一种可能的解决方案是创建助手
DataFrame
由numpy.repeat然后append
到原始,最后sort_values:另一个解决方案是没有可能的排序是groupby与自定义功能和
append
:这是使用单个
pd.DataFrame.append
跟随sort_values
的一种方式 .