gpt4 book ai didi

python - 如何将列表分成单独的行

转载 作者:行者123 更新时间:2023-11-30 21:59:59 24 4
gpt4 key购买 nike

给定以下数据框,我该如何拆分 Adj.列表成单独的行?

Connector Pin   Connector  Pin         Adj.      Color                                    
F123 1 F123 1 [2, 6, 7] R
2 F123 2 [1, 3, 6, 7, 8] O
3 F123 3 [2, 4, 7, 8, 9] Y
4 F123 4 [3, 5, 8, 9, 10] GR
5 F123 5 [4, 9, 10] L
6 F123 6 [1, 2, 7] R
7 F123 7 [1, 2, 3, 6, 8] B
8 F123 8 [2, 3, 4, 7, 9] L
9 F123 9 [3, 4, 5, 8, 10] GR
10 F123 10 [4, 5, 9] O
C137 1 C137 1 [2, 3] R
2 C137 2 [1, 3] R
3 C137 3 [1, 2] R

我正在寻找的输出片段如下:

Connector Pin   Connector  Pin         Adj.      Color                                    
F123 1 F123 1 2 R
1 F123 1 6 R
1 F123 1 7 R

我认为可行的代码如下,它给我的错误是“未实现与两个多索引的合并”

f = df.apply(lambda x: 
pd.Series(x['Adj.']),axis=1).stack().reset_index(level=1, drop=True)
f.name = 'sample'
df.drop('Adj.' , axis=1).join(f)

最佳答案

在我看来,MultiIndexConnectorPin列相同,所以我建议通过reset_index删除它。与drop=True:

df = df.reset_index(drop=True)

然后用 pop 转换列到 DataFrame,通过 stack reshape ,删除第二级并重命名到相​​同的列名称:

s = (pd.DataFrame(df.pop('Adj.').values.tolist())
.stack()
.reset_index(level=1, drop=True)
.rename('Adj.')
.astype(int)
)

很有可能join原文:

df = df.join(s).reset_index(drop=True)
print (df.head(10))
Connector Pin Color Adj.
0 F123 1 R 2
1 F123 1 R 6
2 F123 1 R 7
3 F123 2 O 1
4 F123 2 O 3
5 F123 2 O 6
6 F123 2 O 7
7 F123 2 O 8
8 F123 3 Y 2
9 F123 3 Y 4

使用MultiIndex的解决方案也可以工作,默认情况下仅join排序最终MultiIndex:

s = (pd.DataFrame(df.pop('Adj.').values.tolist(), index=df.index)
.stack()
.reset_index(level=2, drop=True)
.rename('Adj.')
.astype(int)
)

df = df.join(s)
print (df.head(10))
Connector Pin Color Adj.
Connector1 Pin2
C137 1 C137 1 R 2
1 C137 1 R 3
2 C137 2 R 1
2 C137 2 R 3
3 C137 3 R 1
3 C137 3 R 2
F123 1 F123 1 R 2
1 F123 1 R 6
1 F123 1 R 7
2 F123 2 O 1

关于python - 如何将列表分成单独的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54440897/

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