gpt4 book ai didi

python - 将列表列表拆入 pandas 数据框

转载 作者:行者123 更新时间:2023-12-02 06:56:14 26 4
gpt4 key购买 nike

假设我有以下数据框:

x = pd.DataFrame({'a':['x, y', 'x, t, x, r', 'y, t'],
'b':[1, 0, 1]})

a b
0 x, y 1
1 x, t, x, r 0
2 y, t 1

我想去

  letter  num
0 x 1
1 y 1
2 x 0
3 t 0
4 x 0
5 r 0
6 y 1
7 t 1

我已经通过以下方式解决了这个问题,但我觉得我让它变得比需要的更复杂。

x.a = x.a.str.split(",")

empty = []
for b, a in zip(x.b, x.a):
empty.append([b] * len(a))

t = [item for sublist in empty for item in sublist]
y = [item for sublist in x.a for item in sublist]

pd.DataFrame({'letter':t, 'num':y})

letter num
0 1 x
1 1 y
2 0 x
3 0 t
4 0 x
5 0 r
6 1 y
7 1 t

有没有更好的方法来解决这个问题?

最佳答案

使用split对于 lists,首先通过正则表达式 - ,\s+ 表示带有一个或多个空格的逗号,然后 numpy.repeat展平 numpy.concatenate和最后一个 DataFrame 构造函数:

a = x.a.str.split(",\s+")
b = np.repeat(x.b.values, a.str.len())
c = np.concatenate(a.values)

df = pd.DataFrame({'letter':c, 'num':b})
print (df)
letter num
0 x 1
1 y 1
2 x 0
3 t 0
4 x 0
5 r 0
6 y 1
7 t 1

关于python - 将列表列表拆入 pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48809574/

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