繁体   English   中英

具有一列的数据框,每一行都是一个值列表

[英]Dataframe with a column which every row is a list of values

我有一个像这样的熊猫数据框:

         name     favourite_fruits                     votes
0         A          banana                       [5, 0, 5, 0, 5]
1         B          orange                          [5, 0, 5]
2         C          peach                              [5]

我需要将“投票”列转换为:

         name     favourite_fruits                     vote1 vote2 vote3 vote4 vote5
0         A          banana                              5     0     5     0     5
1         B          orange                              5     0     5
2         C          peach                               5

我怎么能这样做? 提前感谢您的回答。

尝试:

#explode to split list into individual rows
df = df.explode("votes")

#groupby and cumcount to get the total votes per index
df["column"] = df.groupby(level=0).cumcount().add(1)

#pivot to get the expected output
output = df.pivot(["name","favourite_fruits"],"column","votes").add_prefix("vote").rename_axis(None,axis=1).reset_index()

>>> output
  name favourite_fruits vote1 vote2 vote3 vote4 vote5
0    A           banana     5     0     5     0     5
1    B           orange     5     0     5   NaN   NaN
2    C            peach     5   NaN   NaN   NaN   NaN

这是另一种方法:

result = pd.concat(
    [df[["name", "favourite_fruits"]],
     pd.DataFrame(lst for lst in df["votes"]).rename(columns=lambda n: f"vote{n + 1}")],
    axis=1
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM