Python 基于索引复制行会使行倍增,而不是复制
我有dataframe,我想在其中复制几行:Python 基于索引复制行会使行倍增,而不是复制,python,python-3.x,pandas,dataframe,replication,Python,Python 3.x,Pandas,Dataframe,Replication,我有dataframe,我想在其中复制几行: X Y diff No Index 1d 0.000 0.017 0.000e+00 0 2D 0.083 0.017 3.000e-03 1 3D 0.250 0.017 7.200e-03 2 6D 0.500 0.019 2.400e-03 3
X Y diff No
Index
1d 0.000 0.017 0.000e+00 0
2D 0.083 0.017 3.000e-03 1
3D 0.250 0.017 7.200e-03 2
6D 0.500 0.019 2.400e-03 3
1DD 1.000 0.020 2.400e-03 4
2DD 2.000 0.023 1.300e-03 5
3DD 3.000 0.024 1.000e-03 6
5DD 5.000 0.026 6.500e-04 7
7DD 7.000 0.027 2.667e-04 8
10DD 10.000 0.028 1.200e-04 9
20DD 20.000 0.029 1.200e-04 10
30DD 30.000 0.031 0.000e+00 11
我想用相同的索引名复制30dd30次,20dd20次,10dd10次
我尝试了这个,而不是复制它
for i in range(4):
test1 = df.append(df.ix['30DD']*30)
X Y diff No
Index
1d 0.000 0.017 0.000e+00 0
2D 0.083 0.017 3.000e-03 1
3D 0.250 0.017 7.200e-03 2
6D 0.500 0.019 2.400e-03 3
1DD 1.000 0.020 2.400e-03 4
2DD 2.000 0.023 1.300e-03 5
3DD 3.000 0.024 1.000e-03 6
5DD 5.000 0.026 6.500e-04 7
7DD 7.000 0.027 2.667e-04 8
10DD 10.000 0.028 1.200e-04 9
20DD 20.000 0.029 1.200e-04 10
30DD 30.000 0.031 0.000e+00 11
30DD 900 0.918 0 330
添加新行,但减去1,因为对于原始的
DataFrame
:
vals = ['30DD'] * 29 + ['20DD'] * 19 + ['10DD'] * 9
df = df.append(df.loc[vals])
最后,如果要按索引值的数量对值进行排序:
df = df.iloc[df.index.str.extract('(\d+)').astype(int).squeeze().argsort()]
使用,可以为要追加的行创建索引列表。然后馈送到原始数据帧并附加到原始数据帧
vals = ['30DD', '20DD', '10DD']
counts = [30, 20, 10]
df = df.append(df.loc[np.repeat(vals, counts)])
旁注:
ix
现已被弃用。改为使用loc
或iloc
。我不清楚。但是,更重要的是,我认为OP可以计算出如何减去一。请随意更正,否则会有问题吗?是的。我希望添加9行、19行和9行,因为我已经添加了一行。这是正确的