簡體   English   中英

如何為數據創建三個新列?

[英]How Can I create three new columns for my data?

我有一些看起來像的數據

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

我想要的是每個推文ID的一行,以及標識工作者ID和選項的三個6列。

它所需的輸出就像

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

我怎么能用熊貓來實現這個目標?

這是關於從長到寬格式重塑數據。 您可以將分組計數列創建為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]

在此輸入圖像描述


pivot_table()的另一個選擇是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]

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM