de-vraag
  • Vragen
  • Tags
  • Gebruikers
Kennisgevingen
Beloningen
Inschrijving
Zodra u zich registreert, wordt u op de hoogte gebracht van antwoorden en opmerkingen op uw vragen.
Log in.
Als u al een account hebt, log dan in om nieuwe meldingen te bekijken.
Er zullen beloningen zijn voor toegevoegde vragen, antwoorden en opmerkingen.
Meer
Bron
Bewerken
 tomasz74
tomasz74
Vraag

Nieuwe kolom toevoegen aan bestaand DataFrame in Python pandas

Ik heb het volgende geïndexeerde DataFrame met benoemde kolommen en rijen met niet-doorlopende getallen:

          a         b         c         d
2  0.671399  0.101208 -0.181532  0.241273
3  0.446172 -0.243316  0.051767  1.577318
5  0.614758  0.075793 -0.451460 -0.012493

Ik wil een nieuwe kolom, 'e', toevoegen aan het bestaande dataframe en wil niets veranderen in het dataframe (d.w.z. dat de nieuwe kolom altijd dezelfde lengte heeft als het DataFrame).

0   -0.335485
1   -1.166658
2   -0.385571
dtype: float64

Ik heb verschillende versies van join, append, merge geprobeerd, maar ik kreeg niet het resultaat dat ik wilde, hooguit fouten. Hoe kan ik kolom e toevoegen aan het bovenstaande voorbeeld?

882 2012-09-23T19:00:01+00:00 3
Brad Solomon
Brad Solomon
Bewerkte vraag 1ste4 december 2017 в 4:52
Programmering
python
pandas
dataframe
chained-assignment
Populaire video's
Pandas nlargest method | Get top n rows of a data frame | Python Pandas Tutorial
Pandas nlargest method | Get top n rows of a data frame | Python Pandas Tutorial
11 maanden geleden
Python Pandas Tutorial 26 | How to Filter Pandas data frame for specific multiple values in a column
Python Pandas Tutorial 26 | How to Filter Pandas data frame for specific multiple values in a column
4 jaar geleden
Pandas Adding Column To DataFrame - 5 Methods
Pandas Adding Column To DataFrame - 5 Methods
1 jaar geleden
Python Pandas Tutorial (Part 6): Add/Remove Rows and Columns From DataFrames
Python Pandas Tutorial (Part 6): Add/Remove Rows and Columns From DataFrames
2 jaar geleden
How To Drop Columns In Python Pandas Dataframe
How To Drop Columns In Python Pandas Dataframe
6 maanden geleden
Python Pandas - Fill missing values in pandas dataframe using fillna, interpolate
Python Pandas - Fill missing values in pandas dataframe using fillna, interpolate
7 maanden geleden
How to insert/add a new row in Pandas Dataframe | Append a list to Pandas Dataframe| Pandas Tutorial
How to insert/add a new row in Pandas Dataframe | Append a list to Pandas Dataframe| Pandas Tutorial
2 jaar geleden
Pandas Replace | pd.DataFrame.replace()
Pandas Replace | pd.DataFrame.replace()
1 jaar geleden
Python Pandas Tutorial (Part 5): Updating Rows and Columns - Modifying Data Within DataFrames
Python Pandas Tutorial (Part 5): Updating Rows and Columns - Modifying Data Within DataFrames
2 jaar geleden
Pandas How add new column existing DataFrame
Pandas How add new column existing DataFrame
3 jaar geleden
How to Add New Column in Pandas Dataframe? | GeeksforGeeks
How to Add New Column in Pandas Dataframe? | GeeksforGeeks
1 jaar geleden
How to Add a New Row to Pandas DataFrame - Python Pandas Tutorial
How to Add a New Row to Pandas DataFrame - Python Pandas Tutorial
2 jaar geleden
Adding new column to DataFrame- Python pandas course
Adding new column to DataFrame- Python pandas course
10 maanden geleden
Python Pandas Tutorials: How to ADD Column to Pandas Dataframe
Python Pandas Tutorials: How to ADD Column to Pandas Dataframe
5 maanden geleden
Add New Columns In Pandas Dataframe
Add New Columns In Pandas Dataframe
6 maanden geleden
Data analysis with python and Pandas - Select rows and column Tutorial 9
Data analysis with python and Pandas - Select rows and column Tutorial 9
5 jaar geleden
Python Pandas - Add Rows to DataFrame
Python Pandas - Add Rows to DataFrame
3 jaar geleden
Create new Column by Condition (pandas, DataFrame)
Create new Column by Condition (pandas, DataFrame)
5 maanden geleden
« Vorige
Volgende »
Deze vraag heeft 1 antwoord in het Engels, om ze te lezen inloggen op uw account.
Oplossing / Antwoord
 joaquin
joaquin
23ste6 september 2012 в 7:24
2012-09-23T19:24:45+00:00
Meer
Bron
Bewerken
#17279006

Gebruik de originele df1 indexen om de series te maken:

df1['e'] = pd.Series(np.random.randn(sLength), index=df1.index)

Edit 2015 Sommigen meldden dat ze de SettingWithCopyWarning kregen met deze code.
De code loopt echter nog steeds perfect met de huidige pandas versie 0.16.1.

>>> sLength = len(df1['a'])
>>> df1
          a         b         c         d
6 -0.269221 -0.026476  0.997517  1.294385
8  0.917438  0.847941  0.034235 -0.448948

>>> df1['e'] = pd.Series(np.random.randn(sLength), index=df1.index)
>>> df1
          a         b         c         d         e
6 -0.269221 -0.026476  0.997517  1.294385  1.757167
8  0.917438  0.847941  0.034235 -0.448948  2.228131

>>> p.version.short_version
'0.16.1'

De SettingWithCopyWarning is bedoeld om te informeren over een mogelijk ongeldige toewijzing op een kopie van het Dataframe. Het zegt niet noodzakelijk dat je het verkeerd deed (het kan valse positieven veroorzaken) maar vanaf 0.13.0 laat het je weten dat er meer adequate methoden zijn voor hetzelfde doel. Dan, als je de waarschuwing krijgt, volg gewoon het advies op: Probeer in plaats daarvan .loc[row_index,col_indexer] = value te gebruiken

>>> df1.loc[:,'f'] = pd.Series(np.random.randn(sLength), index=df1.index)
>>> df1
          a         b         c         d         e         f
6 -0.269221 -0.026476  0.997517  1.294385  1.757167 -0.050927
8  0.917438  0.847941  0.034235 -0.448948  2.228131  0.006109
>>> 

In feite is dit momenteel de efficiëntere methode zoals beschreven in pandas docs


Edit 2017

Zoals aangegeven in de commentaren en door @Alexander, zou momenteel de beste methode om de waarden van een Reeks als een nieuwe kolom van een DataFrame toe te voegen het gebruik van assign kunnen zijn:

df1 = df1.assign(e=pd.Series(np.random.randn(sLength)).values)
 EliadL
EliadL
Bewerkt antwoord 4de0 november 2019 в 3:49
pandas.DataFrame.assign — pandas 1.4.2 documentation
pandas.pydata.org
960
0
Kathirmani Sukumar
Kathirmani Sukumar
12de2 december 2012 в 4:04
2012-12-12T16:04:31+00:00
Meer
Bron
Bewerken
#17279007

Dit is de eenvoudige manier om een nieuwe kolom toe te voegen: df['e'] = e

Kathirmani Sukumar
Kathirmani Sukumar
Bewerkt antwoord 10de5 december 2016 в 6:53
202
0
Andy Hayden
Andy Hayden
23ste6 september 2012 в 7:22
2012-09-23T19:22:27+00:00
Meer
Bron
Bewerken
#17279005

Dit rechtstreeks doen via NumPy zal het meest efficiënt zijn:

df1['e'] = np.random.randn(sLength)

Merk op dat mijn oorspronkelijke (zeer oude) suggestie was om map te gebruiken (wat veel langzamer is):

df1['e'] = df1['a'].map(lambda x: np.random.random())
Peter Mortensen
Peter Mortensen
Bewerkt antwoord 20ste1 oktober 2015 в 1:05
NumPy - Wikipedia
en.wikipedia.org
45
0
Vraag toevoegen
Categorieën
Alle
Technologie
Cultuur / Recreatie
Leven / Kunst
Wetenschap
Professioneel
Business
Gebruikers
Alle
Nieuw
Populair
1
Jasur Fozilov
Geregistreerd 13 uur geleden
2
Zuxriddin Muydinov
Geregistreerd 1 dag geleden
3
Денис Анненский
Geregistreerd 3 dagen geleden
4
365
Geregistreerd 1 week geleden
5
True Image
Geregistreerd 1 week geleden
BG
DE
EL
ES
FR
ID
IT
JA
KO
NL
PT
RU
SK
SL
TR
ZH
© de-vraag 2022
Bron
stackoverflow.com
onder licentie cc by-sa 3.0 met toekenning