考虑以下数据框;
document
我想在'#'列中追加数字大于1的行,该行中的数字减去1. df应该最好 然后看起来像这样;
或者它看起来像这样(行完全乘以);
是的,我已经广泛搜索过这个问题,但找不到能帮助我朝正确方向发展的任何事情。答案 0 :(得分:1)
使用numpy.repeat
:
c = df.columns[1:]
df = pd.DataFrame(np.repeat(df.values, df['#'], axis=0)[:, 1:], columns=c)
print (df)
X Y Z
0 a a a
1 b b b
2 b b b
3 c d c
4 d e d
5 d e d
6 d e d
类似:
df = pd.DataFrame(np.repeat(df.values, df['#'], axis=0), columns=df.columns)
print (df)
# X Y Z
0 1 a a a
1 2 b b b
2 2 b b b
3 1 c d c
4 3 d e d
5 3 d e d
6 3 d e d
但如果订单很重要:
dfs = []
for i in range(df['#'].max()):
df = df[df['#'] > 0].copy()
df['#'] -= 1
dfs.append(df.iloc[:, 1:])
df1 = pd.concat(dfs, ignore_index=True)
print (df1)
X Y Z
0 a a a
1 b b b
2 c d c
3 d e d
4 b b b
5 d e d
6 d e d