Python 如何通过重复最后一行来扩展数据帧?
我有一个数据帧,希望通过重复最后一行n次来扩展它 示例代码:Python 如何通过重复最后一行来扩展数据帧?,python,pandas,Python,Pandas,我有一个数据帧,希望通过重复最后一行n次来扩展它 示例代码: import pandas as pd import numpy as np dates = date_range('1/1/2014', periods=4) df = pd.DataFrame(np.eye(4, 4), index=dates, columns=['A', 'B', 'C', 'D']) n = 3 for i in range(n): df = df.append(df[-1:]) 所以df是
import pandas as pd
import numpy as np
dates = date_range('1/1/2014', periods=4)
df = pd.DataFrame(np.eye(4, 4), index=dates, columns=['A', 'B', 'C', 'D'])
n = 3
for i in range(n):
df = df.append(df[-1:])
所以df是
A B C D
2013-01-01 1 0 0 0
2013-01-02 0 1 0 0
2013-01-03 0 0 1 0
2013-01-04 0 0 0 1
2013-01-04 0 0 0 1
2013-01-04 0 0 0 1
2013-01-04 0 0 0 1
没有for循环有更好的方法吗?您可以使用嵌套的
concat
操作,内部操作将连接最后一行3次,然后我们将其与原始df连接:
In [181]:
dates = pd.date_range('1/1/2014', periods=4)
df = pd.DataFrame(np.eye(4, 4), index=dates, columns=['A', 'B', 'C', 'D'])
pd.concat([df,pd.concat([df[-1:]]*3)])
Out[181]:
A B C D
2014-01-01 1 0 0 0
2014-01-02 0 1 0 0
2014-01-03 0 0 1 0
2014-01-04 0 0 0 1
2014-01-04 0 0 0 1
2014-01-04 0 0 0 1
2014-01-04 0 0 0 1
可以将其放入如下函数中:
In [182]:
def repeatRows(d, n=3):
return pd.concat([d]*n)
pd.concat([df,repeatRows(df[-1:], 3)])
Out[182]:
A B C D
2014-01-01 1 0 0 0
2014-01-02 0 1 0 0
2014-01-03 0 0 1 0
2014-01-04 0 0 0 1
2014-01-04 0 0 0 1
2014-01-04 0 0 0 1
2014-01-04 0 0 0 1
下面是另一种(奇特的索引)方法:
df.append( df.iloc[[-1]*3] )
Out[757]:
A B C D
2014-01-01 1 0 0 0
2014-01-02 0 1 0 0
2014-01-03 0 0 1 0
2014-01-04 0 0 0 1
2014-01-04 0 0 0 1
2014-01-04 0 0 0 1
2014-01-04 0 0 0 1