根据panda中的整数分解行


df = pd.DataFrame([["a", 2], ["b", 3], ["c", 1]], columns=['a', 'count'])
df
a   count
0   a   2
1   b   3
2   c   1

这个输入我想把计数整数分解成多行1。

new_df = pd.DataFrame([], columns=['a', 'count'] )
def s(row):
while row["count"] > 0:
global new_df
a = pd.DataFrame([[row["a"], 1]], columns=["a", "count"])
new_df = new_df.append(a, ignore_index=True)
row["count"] -= 1
df.apply(s, axis=1)
new_df
a   count
0   a   1
1   a   1
2   b   1
3   b   1
4   b   1
5   c   1

我做这件事的方式看起来既糟糕又低效。还有比这更让人讨厌的方法吗?

尝试对重复索引重新索引/loc:

(df.loc[df.index.repeat(df['count'])]
.assign(count=1)
.reset_index(drop=True)
)

输出:

a  count
0  a      1
1  a      1
2  b      1
3  b      1
4  b      1
5  c      1

最新更新