2015-04-08 13 views
52

Mam istniejącą ramkę danych, której potrzebuję, aby dodać dodatkową kolumnę, która będzie zawierać tę samą wartość dla każdego wiersza.Dodaj kolumnę do ramki danych z wartością domyślną

Istniejące df:

Date, Open, High, Low, Close 
01-01-2015, 565, 600, 400, 450 

New df:

Name, Date, Open, High, Low, Close 
abc, 01-01-2015, 565, 600, 400, 450 

wiem, jak dołączyć istniejącą kolumnę seria/dataframe. Ale jest to inna sytuacja, ponieważ potrzebuję tylko dodać kolumnę "Nazwa" i ustawić każdy wiersz na tę samą wartość, w tym przypadku "abc".

Nie jestem do końca pewna, jak to zrobić.

Odpowiedz

77

df['Name']='abc' doda nową kolumnę i ustawić wszystkie wiersze do tej wartości:

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 
+5

Czy jest jakiś inny sposób na zrobienie tego? Otrzymuję następujące ostrzeżenie. Wartość próbuje ustawić na kopii plasterka z DataFrame. Spróbuj zamiast tego użyć .loc [row_indexer, col_indexer] = value. Zobacz zastrzeżenia w dokumentacji: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy –

+0

Oznacza to, że przypisujesz coś, co jest kopią, a nie oryginalny df, nie mogę komentować dalej, nie widząc danych i kodu w formie pytania. Odpowiadanie na pytania w komentarzach jest nieskuteczne. Ten kod działa, zrobiłeś coś wcześniej, aby podnieść ostrzeżenie – EdChum

+0

@vishnuviswanath Otrzymuję dokładnie to samo ostrzeżenie, gdy korzystasz z notatnika Jupyter. Zdarza mi się, gdy mam nietrywialne rozmiary DataFrame (> 200 rekordów) i pewne kombinacje przydziału i po prostu drukowanie df. – Bill

17

pojedyncze liner działa

df['Name'] = 'abc' 

Tworzy kolumnę Name i ustawia wszystkie wiersze do abc wartości

11

Możesz użyć numeru insert, aby określić, gdzie ma się znajdować nowa kolumna. W tym przypadku używam 0, aby umieścić nową kolumnę po lewej stronie.

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

    Name  Date Open High Low Close 
0 abc 01-01-2015 565 600 400 450 
Powiązane problemy