Python 熊猫,复制名称重复N次的行
示例数据:Python 熊猫,复制名称重复N次的行,python,pandas,dataframe,Python,Pandas,Dataframe,示例数据: df1 = pd.DataFrame({ 'file': ['file1','file1','file1','file2','file2','file2','file3','file3','file4'], 'prop1': [True,False,True,False,False,False,True,False,False], 'prop2': [False,False,False,False,True,False,False,True,False],
df1 = pd.DataFrame({
'file': ['file1','file1','file1','file2','file2','file2','file3','file3','file4'],
'prop1': [True,False,True,False,False,False,True,False,False],
'prop2': [False,False,False,False,True,False,False,True,False],
'prop3': [False,True,False,True,False,True,False,False,True]
})
我需要复制“文件”重复3次的行,以获得如下结果:
file prop1 prop2 prop3
0 file1 True False False
1 file1 False False True
2 file1 True False False
3 file2 False False True
4 file2 False True False
5 file2 False False True
您可以
groupby
文件名,使用大小进行转换,并使用结果索引数据帧:
df1[df1.groupby('file').prop1.transform('size').eq(3)]
file prop1 prop2 prop3
0 file1 True False False
1 file1 False False True
2 file1 True False False
3 file2 False False True
4 file2 False True False
5 file2 False False True
IIUCtransform
df=df1[df1.groupby('file')['file'].transform('count').eq(3)].copy() # esure you do not have copy warning for future modify .
file prop1 prop2 prop3
0 file1 True False False
1 file1 False False True
2 file1 True False False
3 file2 False False True
4 file2 False True False
5 file2 False False True
用于与列大小相同的系列,因此可能通过以下方式进行过滤:
详细信息:
print (df1.groupby('file')['file'].transform('size'))
0 3
1 3
2 3
3 3
4 3
5 3
6 2
7 2
8 1
Name: file, dtype: int64
或使用:
或用于:
也可以使用+:
print (df1.groupby('file')['file'].transform('size'))
0 3
1 3
2 3
3 3
4 3
5 3
6 2
7 2
8 1
Name: file, dtype: int64
df = df1.groupby('file').filter(lambda x: len(x) == 3)
df = df1[df1['file'].map(df['file'].value_counts()) == 3]
print (df)
file prop1 prop2 prop3
0 file1 True False False
1 file1 False False True
2 file1 True False False
3 file2 False False True
4 file2 False True False
5 file2 False False True
new_df=df1.set_index('file').loc[df1.groupby('file').size().eq(3)]
print(new_df)
prop1 prop2 prop3
file
file1 True False False
file1 False False True
file1 True False False
file2 False False True
file2 False True False
file2 False False True