gpt4 book ai didi

python - 有条件地在 pandas 中创建行

转载 作者:行者123 更新时间:2023-12-01 02:17:25 26 4
gpt4 key购买 nike


A<br/>
0 a-7,5,1,6,63,101,39,1
1 c-2,7,10,12,27,40,71,78

我有一个与上面的非常相似的数据框。- 前面的字母每行代表一个id每个逗号分隔的值代表数据帧中的一个条目。

我如何有条件地格式化这一行,以便我最终得到类似的内容:


id A
0 a 7
0 a 5
0 a 1
0 a 6
0 a 63
0 a 10
1 c 2
1 c 10
1 c 12
1 c 27
1 c 40

最佳答案

你可以先split通过 - 对于 2 列 DataFrame,然后 set_index对于 Series,按 , 分割并按 unstack reshape 。最后由reset_index进行一些数据清理:

df = (df['A'].str.split('-', expand=True)
.set_index(0)[1]
.str.split(',', expand=True)
.unstack()
.sort_index(level=1)
.reset_index(level=0, name='a')
.reset_index(drop=True))
df.columns = ['id','A']

或者您可以使用np.repeatnumpy.concatenate用于压平:

df = df['A'].str.split('-', expand=True) 
a = df[1].str.split(',')
df = pd.DataFrame({'id': np.repeat(df[0].values, a.str.len()),
'A' : np.concatenate(a)}, columns=['id','A'])
print (df)
id A
0 a 7
1 a 5
2 a 1
3 a 6
4 a 63
5 a 101
6 a 39
7 a 1
8 c 2
9 c 7
10 c 10
11 c 12
12 c 27
13 c 40
14 c 71
15 c 78

关于python - 有条件地在 pandas 中创建行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48276456/

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