имея dataframe, я хочу, чтобы обновить подмножество столбцов с серией такой же длины, как число столбцов обновляется:обновление dataframe с серии
>>> df = pd.DataFrame(np.random.randint(0,5,(6, 2)), columns=['col1','col2'])
>>> df
col1 col2
0 1 0
1 2 4
2 4 4
3 4 0
4 0 0
5 3 1
>>> df.loc[:,['col1','col2']] = pd.Series([0,1])
...
ValueError: shape mismatch: value array of shape (6,) could not be broadcast to indexing result of shape (2,6)
это терпит неудачу, однако, я могу сделать то же самое вещь используя список:
>>> df.loc[:,['col1','col2']] = list(pd.Series([0,1]))
>>> df
col1 col2
0 0 1
1 0 1
2 0 1
3 0 1
4 0 1
5 0 1
не могли бы вы помочь мне понять, почему обновление с помощью серийных сбоев? мне нужно выполнить какую-то конкретную перестройку?
спасибо! когда вы говорите «панды сдаются», значит ли это, что такое назначение не рекомендуется вообще? есть ли лучший, «безопасный» способ? – kekert
@kekert Нет! Не за что. Я был слишком свободен со словами. при назначении списком панды предполагают, что вы знаете, что делаете. Это очень полезная вещь, которую можно сделать. – piRSquared
Возможно, есть чек, потому что если есть только 2 строки, он работает хорошо - 'df = pd.DataFrame (np.random.randint (0,5, (2, 2)), columns = ['col1', 'col2']) ',' df.loc [:, ['col1', 'col2']] = pd.Series ([0,1]) '+1 – jezrael