gpt4 book ai didi

python - 如何为我的数据创建三个新列?

转载 作者:行者123 更新时间:2023-11-28 17:21:44 29 4
gpt4 key购买 nike

我有一些看起来像的数据

tweet_id               worker_id    option
397921751801147392 A1DZLZE63NE1ZI pro-vaccine
397921751801147392 A3UJO2A7THUZTV pro-vaccine
397921751801147392 A3G00Q5JV2BE5G pro-vaccine
558401694862942208 A1G94QON7A9K0N other
558401694862942208 ANMWPCK7TJMZ8 other

我想要的是每个推文 ID 一行,三个 6 列标识工作人员 ID 和选项。

它想要的输出是这样的

tweet_id              worker_id_1  option_1     worker_id_2    option_2     worker_id_3    option 3
397921751801147392 A1DZLZE63NE1ZI pro-vaccine A3UJO2A7THUZTV pro_vaccine A3G00Q5JV2BE5G pro_vaccine

如何使用 pandas 实现这一目标?

最佳答案

这是关于将数据从长格式 reshape 为宽格式。您可以创建一个分组计数列作为 id 以作为新列标题传播,然后使用 pivot_table(),最后通过将多级粘贴在一起来重命名列。

df['count'] = df.groupby('tweet_id').cumcount() + 1
df1 = df.pivot_table(values = ['worker_id', 'option'], index = 'tweet_id',
columns = 'count', aggfunc='sum')
df1.columns = [x + "_" + str(y) for x, y in df1.columns]

enter image description here


pivot_table() 的替代选项是 unstack():

df['count'] = df.groupby('tweet_id').cumcount() + 1
df1 = df.set_index(['tweet_id', 'count']).unstack(level = 1)
df1.columns = [x + "_" + str(y) for x, y in df1.columns]

enter image description here

关于python - 如何为我的数据创建三个新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41213022/

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