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