Python pandas: fill a dataframe row by row

后端 未结 4 1441
[愿得一人]
[愿得一人] 2020-12-12 12:13

The simple task of adding a row to a pandas.DataFrame object seems to be hard to accomplish. There are 3 stackoverflow questions relating to this, none of which

相关标签:
4条回答
  • 2020-12-12 12:16

    df['y'] will set a column

    since you want to set a row, use .loc

    Note that .ix is equivalent here, yours failed because you tried to assign a dictionary to each element of the row y probably not what you want; converting to a Series tells pandas that you want to align the input (for example you then don't have to to specify all of the elements)

    In [7]: df = pandas.DataFrame(columns=['a','b','c','d'], index=['x','y','z'])
    
    In [8]: df.loc['y'] = pandas.Series({'a':1, 'b':5, 'c':2, 'd':3})
    
    In [9]: df
    Out[9]: 
         a    b    c    d
    x  NaN  NaN  NaN  NaN
    y    1    5    2    3
    z  NaN  NaN  NaN  NaN
    
    0 讨论(0)
  • 2020-12-12 12:18

    My approach was, but I can't guarantee that this is the fastest solution.

    df = pd.DataFrame(columns=["firstname", "lastname"])
    df = df.append({
         "firstname": "John",
         "lastname":  "Johny"
          }, ignore_index=True)
    
    0 讨论(0)
  • 2020-12-12 12:28

    If your input rows are lists rather than dictionaries, then the following is a simple solution:

    import pandas as pd
    list_of_lists = []
    list_of_lists.append([1,2,3])
    list_of_lists.append([4,5,6])
    
    pd.DataFrame(list_of_lists, columns=['A', 'B', 'C'])
    #    A  B  C
    # 0  1  2  3
    # 1  4  5  6
    
    0 讨论(0)
  • 2020-12-12 12:40

    This is a simpler version

    import pandas as pd
    df = pd.DataFrame(columns=('col1', 'col2', 'col3'))
    for i in range(5):
       df.loc[i] = ['<some value for first>','<some value for second>','<some value for third>']`
    
    0 讨论(0)
提交回复
热议问题