Как создать другой столбец в соответствии с другим значением столбца в Python? - PullRequest
0 голосов
/ 21 ноября 2019

У меня есть следующий фрейм данных со следующим кодом:

for i in range(int(tower1_base),int(tower1_top)):
     if i not in tower1_not_included_int :
         df = pd.concat([df, pd.DataFrame({"Tower": 1, "Floor": i, "Unit": list("ABCDEFG")})],ignore_index=True)

Result:
   Tower    Floor   Unit
0   1       1.0      A
1   1       1.0      B
2   1       1.0      C
3   1       1.0      D
4   1       1.0      E
5   1       1.0      F
6   1       1.0      G

Как я могу создать еще один столбец индекса, как этот?

   Tower    Floor   Unit     Index
0   1       1.0      A       1A1
1   1       2.0      B       1B2
2   1       3.0      C       1C3
3   1       4.0      D       1D4 
4   1       5.0      E       1E5
5   1       6.0      F       1F6
6   1       7.0      G       1G7

1 Ответ

0 голосов
/ 21 ноября 2019

Другой подход. Я создал копию фрейма данных и изменил порядок столбцов, чтобы упростить процесс «плавления».

dfAl = df.reindex(columns=['Tower','Unit','Floor'])

to_load = []  #list to load the new column
vals    = pd.DataFrame.to_numpy(dfAl)   #All values extracted

for sublist in vals:
    combs = ''.join([str(i).strip('.0') for i in sublist]) #melting values
    to_load.append(combs)

df['Index'] = to_load

Если вы действительно хотите, чтобы столбец «Индекс» был реальным индексом, последний шаг:

df = df.set_index('Index')

print(df)

        Tower  Floor Unit
Index                   
1A1        1    1.0    A
1B2        1    2.0    B
1C3        1    3.0    C
1D4        1    4.0    D
1E5        1    5.0    E
1F6        1    6.0    F
1G7        1    7.0    G
...