Pandas,复制其名称重复N次的行

问题描述 投票:1回答:3

示例数据:

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
python pandas dataframe
3个回答
2
投票

对于与列一样大小的系列使用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

1
投票

您可以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

1
投票

IIUC file

size
© www.soinside.com 2019 - 2024. All rights reserved.