示例数据:
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.transform
,因此可以通过GroupBy.transform
进行过滤:
boolean indexing
详细:
boolean indexing
或使用df = df1[df1.groupby('file')['file'].transform('size') == 3]
:
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
filtration
您可以filtration
df = df1.groupby('file').filter(lambda x: len(x) == 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
进行转换,然后使用结果为数据帧编制索引:
groupby
IIUC file
size