每个 id 创建 n 行 |熊猫

2024-05-06

我有一个数据框df如下:

id lob addr addr2
a1 001 1234 0
a1 001 1233 0
a3 003 1221 0
a4 009 1234 0

我想生成n(让我们每个 id 取 4)行,其他列是null/na/nan价值观。 因此,上表应改写为:

id lob addr addr2
a1 001 1234 0
a1 001 1233 0
a1 001 na na
a1 na na na
a3 003 1221 0
a3 na na na
a3 na na na
a3 na na na
a4 009 1234 0
a4 na na na
a4 na na na
a4 na na na

我怎样才能实现这个目标?执行时我将拥有 500-700 个 id,并且 n 始终为 70(因此每个 id 应该有 70 行)。

我想创建一个循环来创建一行,按 id 进行分组,看看它是否小于 70,然后重复该过程,但最终会执行很多不必要的操作。


下面是一个使用 Counter 来计算每个 ID 需要多少额外行的解决方案,然后仅附加新数据:

from collections import Counter
id_count = Counter(df['id'])
# Create lists of each id repeated the number of times each is needed:
n = 4
id_values = [[i] * (n - id_count[i]) for i in id_count.keys()]
# Flatten to a single list:
id_values = [i for s in id_values for i in s]
# Create as new DataFrame and append to existing data:
new_data = pd.DataFrame({"id": id_values})
df = df.append(new_data).sort_values(by="id")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

每个 id 创建 n 行 |熊猫 的相关文章

随机推荐