我需要创建一个函数来扩展数据框。例如,函数的输入是:
df = pd.DataFrame({
'Name':['Ali', 'Ali', 'Ali', 'Sasha', 'Sasha', 'Sasha'],
'Cart':['book', 'phonecase', 'shirt', 'phone', 'food', 'bag']
})
假设 n 值为 3。然后,对于“姓名”列中的每个人,我必须再添加 3 个新行,并将购物车保留为 np.nan。输出应该是这样的:
df = pd.DataFrame({
'Name':['Ali', 'Ali', 'Ali', 'Ali', 'Ali', 'Ali', 'Sasha', 'Sasha', 'Sasha', 'Sasha', 'Sasha', 'Sasha'],
'Cart':['book', 'phonecase', 'shirt', np.nan, np.nan, np.nan, 'phone', 'food', 'bag', np.nan, np.nan, np.nan]
})
如何使用copy()和append()解决这个问题?
最佳答案
您可以将np.repeat
与pd.Series.unique
一起使用:
n = 3
print (df.append(pd.DataFrame(np.repeat(df["Name"].unique(), n), columns=["Name"])))
Name Cart
0 Ali book
1 Ali phonecase
2 Ali shirt
3 Sasha phone
4 Sasha food
5 Sasha bag
0 Ali NaN
1 Ali NaN
2 Ali NaN
3 Sasha NaN
4 Sasha NaN
5 Sasha NaN
关于Python-将数据框中的行展开n次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70098068/