Есть ли способ присвоить дату каждому значению в строке, а затем транспонировать df? - PullRequest
0 голосов
/ 05 августа 2020

Вот мои данные:

import pandas as pd 

data = {'key_1':['drzerocraic', 'revealed', 'telegraph', 'landg', 'telegraph', 'subyroy'], 
        'key_2':['cilliandegascun', 'dailymailceleb', 'andrew', 'nhwunlocked', 'andrew', 'coronavirus'],
        'key_3':['langan', 'york', 'harper', 'newhomesweek', 'harper', 'video'],
        'key_4':['drbosheagp', 'attorney', 'case', 'helptobuy', 'workplace', 'breakout'],
        'date':['7/21/2020 18:20', '7/27/2020 7:10', '7/27/2020 15:32', '7/23/2020 2:47', '7/21/2020 12:01',
               '7/20/2020 8:26'],
       } 
  
# Create DataFrame 
df = pd.DataFrame(data) 
  
# Print the output. 
print(df) 

Есть ли способ манипулировать ими, чтобы каждое ключевое слово было собственной строкой с точной датой? Итак, окончательный фрейм данных будет иметь два столбца: ключевое слово и дату. Как это:

data_final = {'key':['drzerocraic', 'revealed', 'telegraph', 'landg', 'telegraph', 'subyroy',
              'cilliandegascun', 'dailymailceleb', 'andrew', 'nhwunlocked', 'andrew', 'coronavirus',
              'langan', 'york', 'harper', 'newhomesweek', 'harper', 'video',
              'drbosheagp', 'attorney', 'case', 'helptobuy', 'workplace', 'breakout'], 
        'date':['7/21/2020 18:20', '7/27/2020 7:10', '7/27/2020 15:32', '7/23/2020 2:47', '7/21/2020 12:01', '7/20/2020 8:26',
                '7/21/2020 18:20', '7/27/2020 7:10', '7/27/2020 15:32', '7/23/2020 2:47', '7/21/2020 12:01', '7/20/2020 8:26',
                '7/21/2020 18:20', '7/27/2020 7:10', '7/27/2020 15:32', '7/23/2020 2:47', '7/21/2020 12:01', '7/20/2020 8:26',
                '7/21/2020 18:20', '7/27/2020 7:10', '7/27/2020 15:32', '7/23/2020 2:47', '7/21/2020 12:01','7/20/2020 8:26'
            
            
        ]}
# Create DataFrame 
df_final = pd.DataFrame(data_final) 
  
# Print the output. 
print(df_final)

Ответы [ 2 ]

1 голос
/ 05 августа 2020

Пользователь pandas.melt,

import pandas as pd

(
     pd.melt(df, id_vars=['date'], value_vars=df.columns[:-1], 
             value_name='key').drop(columns='variable')
)

               date              key
0   7/21/2020 18:20      drzerocraic
1    7/27/2020 7:10         revealed
2   7/27/2020 15:32        telegraph
3    7/23/2020 2:47            landg
4   7/21/2020 12:01        telegraph
5    7/20/2020 8:26          subyroy
6   7/21/2020 18:20  cilliandegascun
7    7/27/2020 7:10   dailymailceleb
8   7/27/2020 15:32           andrew
9    7/23/2020 2:47      nhwunlocked
10  7/21/2020 12:01           andrew
11   7/20/2020 8:26      coronavirus
12  7/21/2020 18:20           langan
13   7/27/2020 7:10             york
14  7/27/2020 15:32           harper
15   7/23/2020 2:47     newhomesweek
16  7/21/2020 12:01           harper
17   7/20/2020 8:26            video
18  7/21/2020 18:20       drbosheagp
19   7/27/2020 7:10         attorney
20  7/27/2020 15:32             case
21   7/23/2020 2:47        helptobuy
22  7/21/2020 12:01        workplace
23   7/20/2020 8:26         breakout
0 голосов
/ 05 августа 2020

По сути, вы хотите stack. Попробуйте следующее:

import pandas as pd

df_final = df.set_index('date').stack().reset_index()

# Delete column that contains the names of the previous colums
del df_final['level_1']

df_final.columns = ['date', 'key']

print(df_final)

 date              key
0   7/21/2020 18:20      drzerocraic
1   7/21/2020 18:20  cilliandegascun
2   7/21/2020 18:20           langan
3   7/21/2020 18:20       drbosheagp
4    7/27/2020 7:10         revealed
5    7/27/2020 7:10   dailymailceleb
6    7/27/2020 7:10             york
7    7/27/2020 7:10         attorney
8   7/27/2020 15:32        telegraph
9   7/27/2020 15:32           andrew
10  7/27/2020 15:32           harper
11  7/27/2020 15:32             case
12   7/23/2020 2:47            landg
13   7/23/2020 2:47      nhwunlocked
14   7/23/2020 2:47     newhomesweek
15   7/23/2020 2:47        helptobuy
16  7/21/2020 12:01        telegraph
17  7/21/2020 12:01           andrew
18  7/21/2020 12:01           harper
19  7/21/2020 12:01        workplace
20   7/20/2020 8:26          subyroy
21   7/20/2020 8:26      coronavirus
22   7/20/2020 8:26            video
23   7/20/2020 8:26         breakout

Теперь основное отличие, как вы можете видеть, состоит в том, что установка индекса на «date» также группирует одинаковые даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...