gpt4 book ai didi

python - 复制单元格包含多条数据的行

转载 作者:行者123 更新时间:2023-11-28 22:11:06 25 4
gpt4 key购买 nike

我想获取一个数据框并复制某些行。一列名为 name,可能有多个名称。下面构造了一个示例数据框:

data = [
['Joe', '17-11-2018', '2'],
['Karen', '17-11-2018', '4'],
['Bill, Avery', '17-11-2018', '6'],
['Sam', '18-11-2018', '4'],
['Alex, Frank', '18-11-2018', '6'],
['Chris', '18-11-2018', '8'],
]
df = pd.DataFrame(data, columns = ['name','date','number'])

这会产生以下数据框:

          name        date number
0 Joe 17-11-2018 2
1 Karen 17-11-2018 4
2 Bill, Avery 17-11-2018 6
3 Sam 18-11-2018 4
4 Alex, Frank 18-11-2018 6
5 Chris 18-11-2018 8

我想获取所有有多个名称(以逗号分隔)的行,并为每个单独的名称复制它们。生成的数据框应如下所示:

    name        date number
0 Joe 17-11-2018 2
1 Karen 17-11-2018 4
2 Bill 17-11-2018 6
3 Avery 17-11-2018 6
4 Sam 18-11-2018 4
5 Alex 18-11-2018 6
6 Frank 18-11-2018 6
7 Chris 18-11-2018 8

最佳答案

str.split 之后,它变成了 unnest问题

df['name']=df.name.str.split(',')

unnesting(df,['name'])
Out[97]:
name date number
0 Joe 17-11-2018 2
1 Karen 17-11-2018 4
2 Bill 17-11-2018 6
2 Avery 17-11-2018 6
3 Sam 18-11-2018 4
4 Alex 18-11-2018 6
4 Frank 18-11-2018 6
5 Chris 18-11-2018 8

def unnesting(df, explode):
idx = df.index.repeat(df[explode[0]].str.len())
df1 = pd.concat([
pd.DataFrame({x: np.concatenate(df[x].values)}) for x in explode], axis=1)
df1.index = idx
return df1.join(df.drop(explode, 1), how='left')

关于python - 复制单元格包含多条数据的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56139551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com