Экспорт в CSV с новым столбцом [дубликат]

Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException вообще.

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

68
задан darkpool 8 April 2015 в 14:09
поделиться

4 ответа

df['Name']='abc' добавит новый столбец и установит все строки в это значение:

In [79]:

df
Out[79]:
         Date, Open, High,  Low,  Close
0  01-01-2015,  565,  600,  400,    450
In [80]:

df['Name'] = 'abc'
df
Out[80]:
         Date, Open, High,  Low,  Close Name
0  01-01-2015,  565,  600,  400,    450  abc
105
ответ дан EdChum 18 August 2018 в 07:09
поделиться
  • 1
    Есть ли другой способ сделать это? Я получаю следующее предупреждение. Значение пытается быть установлено на копии среза из DataFrame. Вместо этого попробуйте использовать .loc [row_indexer, col_indexer] = значение. См. Оговорки в документации: pandas.pydata.org/pandas-docs/stable/… – vishnu viswanath 18 November 2017 в 22:01
  • 2
  • 3
    @vishnuviswanath Я получаю то же предупреждение, что и вы, когда я использую Jupyter Notebook. Это случается со мной, когда у меня есть нетривиальные размеры DataFrame (& gt; 200 записей) и некоторые комбинации присвоений и просто распечатываются df. – Bill 21 February 2018 в 07:50
  • 4
    @vishnuviswanath Если вы распечатываете содержимое своих DataFrames, попробуйте комментировать некоторые из них. Иногда это помогает мне. Еще одна вещь, которая, кажется, работает, - это играть с местоположением, где вы делаете df['Name'] = 'abc', относительно других операций. – Bill 21 February 2018 в 08:06

Подводя итог тому, что предложили другие, и добавив третий способ

Вы можете:

  • присваивать (** kwargs) :
    df.assign(Name='abc')
    
  • получить доступ к новой серии столбцов (она будет создана) и установить ее:
    df['Name'] = 'abc'
    
  • insert (loc, column , value, allow_duplicates = False)
    df.insert(0, 'Name', 'abc')
    
    , где аргумент loc (0 & lt; = loc & lt; = len (columns)) позволяет вам вставить нужный столбец. «loc» дает вам индекс, по которому ваш столбец будет на после вставки. Например, приведенный выше код вставляет имя столбца в качестве 0-го столбца, то есть он будет вставлен перед в первый столбец, становясь новым первым столбцом. (Индексация начинается с 0).

Все эти методы также позволяют добавить новый столбец из серии (просто замените приведенный выше аргумент «abc» по умолчанию).

5
ответ дан Michele Piccolini 18 August 2018 в 07:09
поделиться

Вы можете использовать insert , чтобы указать, где вы хотите использовать новый столбец. В этом случае я использую 0, чтобы поместить новый столбец слева.

df.insert(0, 'Name', 'abc')

  Name        Date  Open  High  Low  Close
0  abc  01-01-2015   565   600  400    450
24
ответ дан piRSquared 18 August 2018 в 07:09
поделиться

Работа с одним лайнером

df['Name'] = 'abc'

Создает столбец Name и устанавливает все строки в значение abc

18
ответ дан Zero 18 August 2018 в 07:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: