请参阅以下数据。
import pandas as pd
data = [['PMO', 10], ['LOL', 15], ['juli', 14], ['PMO', 10], ['LOL',
15], ['juli', 14]]
df = pd.DataFrame(data, columns=['Name', 'Age'])
print(df)我想迭代这个说明性数据,并复制/乘行,以便如果一行包含或匹配PMO,则行在下面被复制。如果是的话,这是可能的吗?
亲切的问候
发布于 2022-10-25 12:54:49
下面是一个小技巧,检查名称是否等于PMO以获得布尔序列,并添加1以转换为1/2的整数序列。
out = df.loc[df.index.repeat(df['Name'].eq('PMO').add(1))]对于更经典的方法,请使用concat
out = pd.concat([df, df.loc[df['Name'].eq('PMO')]]).sort_index()产出:
Name Age
0 PMO 10
0 PMO 10
1 LOL 15
2 juli 14用“juli”6次复制行:
N = 6
out = df.loc[df.index.repeat(df['Name'].eq('juli').mul(N-1).add(1))]输出(只包含N=3以保持短):
Name Age
0 PMO 10
1 LOL 15
2 juli 14
2 juli 14
2 juli 14
3 PMO 10
4 LOL 15
5 juli 14
5 juli 14
5 juli 14https://stackoverflow.com/questions/74194407
复制相似问题