Pandas: назначить список всем строкам мультииндексного фрейма данных - PullRequest
1 голос
/ 23 апреля 2020

У меня есть многоиндексный фрейм данных, скажем,

index = [['a', 'a', 'b', 'b'],[1, 2, 1, 2]]
df = pd.DataFrame([1,2,3,4], index=index)

     0
a 1  1
  2  2
b 1  3
  2  4

Если я хочу добавить новый столбец с постоянным значением, я могу просто сделать

df['new_col'] = 'IamNew'

     0 new_col
a 1  1  IamNew
  2  2  IamNew
b 1  3  IamNew
  2  4  IamNew

Perfect. Однако что, если я хочу добавить новый столбец со списком? Это не работает

df['new_col']=[1,2]
ValueError: Length of values does not match length of index

Я перепробовал много вариантов и потратил довольно много времени, пытаясь выяснить это. Есть идеи?

1 Ответ

1 голос
/ 23 апреля 2020

Сначала я думаю, что работать с list s в pandas - это не хорошая идея , но возможно:

df['new_col']=pd.Series([[1,2]] * len(df), index=df.index)
print (df)
     0 new_col
a 1  1  [1, 2]
  2  2  [1, 2]
b 1  3  [1, 2]
  2  4  [1, 2]

Другое решение:

df['new_col']= [[1,2]] * len(df)
...