2024-04-26 05:02:38 发布
网友
我有这样一个数据框:
df col1 col2 1 A 3 B 6 A 10 C
我想从上面的df创建一个数据帧,如果col1值不是连续的,它将创建另一行,其中包含下一个col1值,col2值正好是上面的值。你知道吗
我要找的数据框应该是
df col1 col2 1 A 2 A 3 B 4 B 5 B 6 A 7 A 8 A 9 A 10 C
我可以用一个简单的for循环来实现它,但是有什么pythonic的方法可以用pandas来实现它吗?你知道吗
一种方法是将^{}与^{}一起使用:
(df.set_index('col1') .reindex(range(df.col1.iloc[0], df.col1.iloc[-1]+1)) .ffill() .reset_index()) col1 col2 0 1 A 1 2 A 2 3 B 3 4 B 4 5 B 5 6 A 6 7 A 7 8 A 8 9 A 9 10 C
或者以另一种方式使用^{}:
df.col2.repeat(df.col1.diff().shift(-1).fillna().reset_index(drop=True)
这里有一种使用set_index()和^{}和ffill的方法:
set_index()
ffill
df.set_index('col1').reindex(range(df.col1.min(),df.col1.max()+1)).ffill().reset_index() #df.set_index('col1').reindex(range(df.col1.min(),df.col1.max()+1),method='ffill')\ #.reset_index()
col1 col2 0 1 A 1 2 A 2 3 B 3 4 B 4 5 B 5 6 A 6 7 A 7 8 A 8 9 A 9 10 C
一种方法是将^{} 与^{} 一起使用:
或者以另一种方式使用^{} :
这里有一种使用} 和
set_index()
和^{ffill
的方法:相关问题 更多 >
编程相关推荐