gpt4 book ai didi

python - 如何将 'pivot' 数据帧的值放入列中

转载 作者:太空宇宙 更新时间:2023-11-03 14:17:19 25 4
gpt4 key购买 nike

我正在尝试转换数据框

df = pd.DataFrame({
'c1': ['x','y','z'],
'c2': [[1,2,3],[1,3],[2,4]]})

看起来像

    c1  c2
0 x [1, 2, 3]
1 y [1, 3]
2 z [2, 4]

进入

p = pd.DataFrame({
'c1': ['x','y','z'],
1: [1,1,0],
2: [1,0,1],
3: [1,1,0],
4: [0,0,1]
})

看起来像

    c1  1   2   3   4
0 x 1 1 1 0
1 y 1 0 1 0
2 z 0 1 0 1

值 1 和 0 应该是 true 和 false。我还在学习枢轴。请为我指明正确的方向。

最佳答案

您可以使用:

from sklearn.preprocessing import MultiLabelBinarizer

mlb = MultiLabelBinarizer()

df1 = pd.DataFrame(mlb.fit_transform(df['c2']),columns=mlb.classes_, index=df.index)

df = df.drop('c2', 1).join(df1)
print (df)

c1 1 2 3 4
0 x 1 1 1 0
1 y 1 0 1 0
2 z 0 1 0 1

另一个解决方案:

df1 = df['c2'].apply(lambda x: '|'.join([str(y) for y in x])).str.get_dummies()

df = df.drop('c2', 1).join(df1)
print (df)
c1 1 2 3 4
0 x 1 1 1 0
1 y 1 0 1 0
2 z 0 1 0 1

编辑:

谢谢,MaxU好的建议:

df = df.join(pd.DataFrame(mlb.fit_transform(df.pop('c2')),
columns‌​=mlb.classes_,
index=df.index))

关于python - 如何将 'pivot' 数据帧的值放入列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48166900/

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