Pandas: рдХрд┐рд╕реА рднрд┐рдиреНрди рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЗ рд╕рд╛рде DataFrame рдореЗрдВ рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЬреЛрдбрд╝рддреЗ рд╕рдордп, рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕рднреА NaN рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 6 рджрд┐рд╕ре░ 2011  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: pandas-dev/pandas

рдЗрд╕рдХрд╛ рд╕реНрдкрд╖реНрдЯ рдЙрджрд╣рд╛рд░рдг:

>>> df
               RP/Rsum  P.value
ID                             
A_23_P42353    17.8     0      
A_23_P369994   15.91    0      
A_33_P3262440  436.7    0.0005 
A_32_P199429   18.97    0      
A_23_P256724   22.24    0      
A_33_P3394689  24.24    0      
A_33_P3403117  27.14    0      
A_24_P252364   28.56    0      
A_23_P99515    31.82    0      
A_24_P261750   31.46    0 

>>> df.dtypes
RP/Rsum    float64
P.value    float64

>>> ids = pandas.Series(['51513', '9201', np.nan, np.nan, '8794', '6530', '7025', '4897', '84935', '11081'])
>>> df["test"] = ids
>>> df
               RP/Rsum  P.value  test
ID                                   
A_23_P42353    17.8     0        NaN 
A_23_P369994   15.91    0        NaN 
A_33_P3262440  436.7    0.0005   NaN 
A_32_P199429   18.97    0        NaN 
A_23_P256724   22.24    0        NaN 
A_33_P3394689  24.24    0        NaN 
A_33_P3403117  27.14    0        NaN 
A_24_P252364   28.56    0        NaN 
A_23_P99515    31.82    0        NaN 
A_24_P261750   31.46    0        NaN 
>>> df.dtypes
RP/Rsum    float64
P.value    float64
test       object

рдпрд╣ рдлреНрд▓реЛрдЯ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рд╕рд╛рде рднреА рд╣реЛрддрд╛ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЯреНрд░рд┐рдЧрд░ рдХреНрдпрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЬрдм рдЖрдк рдПрдХ рдХреА рдЖрдкреВрд░реНрддрд┐ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд 0, ..., рдПрди -1 рдЗрдВрдбреЗрдХреНрд╕ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ- рддреЛ рдпрд╣ рд╡рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдЬрд┐рд╕рдХреА рдореИрдВ рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реВрдВред рдпрджрд┐ data рдПрдХ рдХрдЪреНрдЪрд╛ ndarray рдпрд╛ рдПрдХ рд╕реВрдЪреА рд╣реЛрддреА, рддреЛ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ред рддреЛ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдХрд░рддреЗ рд╣реИрдВ:

df[col] = series

рдФрд░ рдпрд╣ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ df рдХреА рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЗ рдмрд┐рд▓реНрдХреБрд▓ рдЕрдиреБрд░реВрдк рдмрдирд╛рддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдФрд░ рдмрдЧ рдирд╣реАрдВ рд╣реИ :) рддреЛ

df['test'] = ids.values

рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛

рд╕рднреА 9 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рдЖрдЬ рд╕реБрдмрд╣ рднреА рдкрд╛рдпрд╛:

>>> df = pandas.DataFrame(index=[1,2,3,4])
>>> df["test"] = pandas.Series(["B", "fdf", "344", np.nan])
>>> df["test2"] = ["B", "fdf", "344", np.nan]
>>> df   test  test2
1  fdf   B    
2  344   fdf  
3  NaN   344  
4  NaN   nan  

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХрд┐рд╕реА рддрд░рд╣ рдХреА рдСрдл-рдмрд╛рдп-рд╡рди рддреНрд░реБрдЯрд┐ рд╣реИред

рдЕрдкрд░рд╛рдзреА рд╣реЛрдиреЗ рдкрд░ рдЖрдЗрдЯрдо рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп рдЖрдЧреЗ рдХреА рдЦреБрджрд╛рдИ Series.reindex рдХреЙрд▓ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИ:

>>> data 
0    B
1    fdf
2    344
3    NaN

>>>  df.index = ["A", "B", "C", "D"]
>>> data.reindex(df.index).values
array([nan, nan, nan, nan], dtype=object)

рдФрд░ рднреА рдЕрдзрд┐рдХ рдЦреБрджрд╛рдИ рд╕реЗ рдЗрдВрдбреЗрдХреНрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ reindex рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдПрдХ рдЕрдЬреАрдм рдкрд░рд┐рдгрд╛рдо рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

>>> data.index.reindex(df.index)
(Index([A, B, C, D], dtype=object), array([-1, -1, -1, -1], dtype=int32))

рдЗрди -1 рдХрд╛ рддрдм NaN рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдзрд┐рдХ рд╕рд╣реА рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдЕрджреНрдпрддрди рдмрдЧ рд╢реАрд░реНрд╖рдХред

рдЬрдм рдЖрдк рдПрдХ рдХреА рдЖрдкреВрд░реНрддрд┐ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд 0, ..., рдПрди -1 рдЗрдВрдбреЗрдХреНрд╕ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ- рддреЛ рдпрд╣ рд╡рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдЬрд┐рд╕рдХреА рдореИрдВ рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реВрдВред рдпрджрд┐ data рдПрдХ рдХрдЪреНрдЪрд╛ ndarray рдпрд╛ рдПрдХ рд╕реВрдЪреА рд╣реЛрддреА, рддреЛ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ред рддреЛ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдХрд░рддреЗ рд╣реИрдВ:

df[col] = series

рдФрд░ рдпрд╣ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ df рдХреА рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЗ рдмрд┐рд▓реНрдХреБрд▓ рдЕрдиреБрд░реВрдк рдмрдирд╛рддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдФрд░ рдмрдЧ рдирд╣реАрдВ рд╣реИ :) рддреЛ

df['test'] = ids.values

рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛

рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╢рд╛рдпрдж рдЗрд╕реЗ рдХрд╣реАрдВ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдмреАрдЪ, рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИ, рдореИрдВ рдЕрдкрдирд╛ рдХреЛрдб рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░ рджреВрдВрдЧрд╛, рдзрдиреНрдпрд╡рд╛рджред

http://pandas.sourceforge.net/dsintro.html#column -selection-addition-deletion

When inserting a Series that does not have the same index as the DataFrame, it will be conformed to the DataFrameтАЩs index:

In [180]: df['one_trunc'] = df['one'][:2]

In [181]: df
Out[181]: 
   one  flag   foo  one_trunc
a  1    False  bar  1        
b  2    False  bar  2        
c  3    True   bar  NaN      
d  NaN  False  bar  NaN      

You can insert raw ndarrays but their length must match the length of the DataFrameтАЩs index.

рдЗрд╕ рддрдереНрдп рдХреЗ рдкреАрдЫреЗ рдХреНрдпрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддреЗ рд╕рдордп рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо рдХреЗ рд╕рдорд╛рди рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо рдХреА рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдЧрд╛?

рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реЗ рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо рдмрдирд╛рддреЗ рд╕рдордп, рдкрд░рд┐рдгрд╛рдореА рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╕рднреА рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЛ рдХрд╡рд░ рдХрд░рддреА рд╣реИред рддреЛ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм df['new_column'] = series?
рддреЛ рдЖрдк рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрди рд╕рднреА рдорд╛рдиреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ рд╣реИрдВ?
рдпрджрд┐ _index рдПрдХреНрд╕рдЯреЗрдВрд╢рди_ рдореМрдЬреВрдж рд╣реЛрдЧрд╛, рддреЛ рдХреЛрдИ рд╣рдореЗрд╢рд╛ df['new_column'] = series.reindex(df.index) рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм рдХреЛрдИ рдЗрдВрдбреЗрдХреНрд╕ (рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░) рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ?

In [256]: df = pandas.DataFrame({'A': pandas.Series(['foo', 'bar'], index=['a', 'b']),
   .....:                        'B': pandas.Series([10, 20], index=['b', 'c'])})

In [257]: df
Out[257]:
   A    B
a  foo  NaN
b  bar  10.000
c  NaN  20.000

In [258]: df['C'] = pandas.Series(range(3), index=['a', 'c', 'd'])

In [259]: df
Out[259]:
   A    B       C
a  foo  NaN     0.000
b  bar  10.000  NaN
c  NaN  20.000  1.000

рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдореИрдВ рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ 'рдбреА' рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реВрдБред

рдЦреИрд░, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореВрд▓ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛рдлреНрд░реЗрдо "рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд▓рдВрдмрд╛рдИ рд╡рд╛рд▓рд╛ рддрд╛рдирд╛рд╢рд╛рд╣ рдЬреИрд╕рд╛ рдХрдВрдЯреЗрдирд░" рд╣реИред рдЬрдм рдЖрдк рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЗ рдмрд┐рдирд╛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдПрдХ рддрд╛рдирд╛ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрди рд╕рднреА рдХреЗ рд╕рдВрдШ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рд╕реВрдЪрдХрд╛рдВрдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдореИрдВ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЯреНрд░реЗрдбрдСрдлрд╝ рд╣реИрдВ

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

marcelnem picture marcelnem  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

venuktan picture venuktan  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mfmain picture mfmain  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

andreas-thomik picture andreas-thomik  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

songololo picture songololo  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ