使用pandas在数据框中追加一个空行

Man*_*ram 19 python python-2.7 pandas

我试图在数据帧的末尾添加一个空行,但无法这样做,甚至试图理解pandas如何使用追加函数并仍然没有得到它.

这是代码:

import pandas as pd

excel_names = ["ARMANI+EMPORIO+AR0143-book.xlsx"]
excels = [pd.ExcelFile(name) for name in excel_names]
frames = [x.parse(x.sheet_names[0], header=None,index_col=None).dropna(how='all') for x in excels]
for f in frames:
    f.append(0, float('NaN'))
    f.append(2, float('NaN'))
Run Code Online (Sandbox Code Playgroud)

有两列和随机数的行.

在for循环中使用"print f"来获取:

                             0                 1
0                   Brand Name    Emporio Armani
2                 Model number            AR0143
4                  Part Number            AR0143
6                   Item Shape       Rectangular
8   Dial Window Material Type           Mineral
10               Display Type          Analogue
12                 Clasp Type            Buckle
14               Case Material   Stainless steel
16              Case Diameter    31 millimetres
18               Band Material           Leather
20                 Band Length  Women's Standard
22                 Band Colour             Black
24                 Dial Colour             Black
26            Special Features       second-hand
28                    Movement            Quartz
Run Code Online (Sandbox Code Playgroud)

sil*_*dev 14

您可以通过将系列附加到数据框来添加它,如下所示.我假设您想要添加仅包含"Nan"的行.您可以先使用Nan创建一个Series对象.确保在-Index参数中定义"Series"对象时指定列.您可以将其附加到DF.希望能帮助到你!

from numpy import nan as Nan
import pandas as pd

>>> df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
...                     'B': ['B0', 'B1', 'B2', 'B3'],
...                     'C': ['C0', 'C1', 'C2', 'C3'],
...                     'D': ['D0', 'D1', 'D2', 'D3']},
...                     index=[0, 1, 2, 3])

>>> s2 = pd.Series([Nan,Nan,Nan,Nan], index=['A', 'B', 'C', 'D'])
>>> result = df1.append(s2)
>>> result
     A    B    C    D
0   A0   B0   C0   D0
1   A1   B1   C1   D1
2   A2   B2   C2   D2
3   A3   B3   C3   D3
4  NaN  NaN  NaN  NaN
Run Code Online (Sandbox Code Playgroud)


src*_*rer 13

使用pandas.DataFrame.append()添加一个新的pandas.Series。

如果您希望指定新行的名称(也称为“索引”),请使用:

df.append(pandas.Series(name='NameOfNewRow'))
Run Code Online (Sandbox Code Playgroud)

如果您不想命名新行,请使用:

df.append(pandas.Series(), ignore_index=True)
Run Code Online (Sandbox Code Playgroud)

df您的pandas.DataFrame 在哪里。

  • 通过将日期时间对象传递给名称参数,这也适用于类似日期时间的索引;例如`df.append(pandas.Series(name=datetime.datetime(2018, 2, 1)))`。结合`df.sort_index()`,新行被放置在正确的位置。 (2认同)

Dav*_*her 5

假设df是你的数据框,

df_prime = pd.concat([df, pd.DataFrame([[np.nan] * df.shape[1]], columns=df.columns)], ignore_index=True)
Run Code Online (Sandbox Code Playgroud)

其中df_prime等于df最后一行 NaN。

请注意,这pd.concat很慢,因此如果您在循环中需要此功能,最好避免使用它。在这种情况下,假设您的索引是增量的,您可以使用

df.loc[df.iloc[-1].name + 1,:] = np.nan
Run Code Online (Sandbox Code Playgroud)

  • 太好了,这个更有用,可以在很多情况下使用,thx (2认同)

poc*_*ora 5

您可以添加一个新系列,并同时为其命名。名称将是新行的索引,所有值将自动为 NaN。

df.append(pd.Series(name='Afterthought'))
Run Code Online (Sandbox Code Playgroud)


Pet*_*ter 5

将“空”行附加到数据框并填充选定的单元格:

生成空数据框(没有行,只有列ab):

import pandas as pd    
col_names =  ["a","b"]
df  = pd.DataFrame(columns = col_names)
Run Code Online (Sandbox Code Playgroud)

在数据框末尾附加空行:

df = df.append(pd.Series(), ignore_index = True)
Run Code Online (Sandbox Code Playgroud)

len(df)-1现在填充列中数据框末尾 () 的空单元格a

df.loc[[len(df)-1],'a'] = 123
Run Code Online (Sandbox Code Playgroud)

结果:

     a    b
0  123  NaN
Run Code Online (Sandbox Code Playgroud)

当然,我们可以迭代行并填充单元格:

col_names =  ["a","b"]
df  = pd.DataFrame(columns = col_names)
for x in range(0,5):
    df = df.append(pd.Series(), ignore_index = True)
    df.loc[[len(df)-1],'a'] = 123
Run Code Online (Sandbox Code Playgroud)

结果:

     a    b
0  123  NaN
1  123  NaN
2  123  NaN
3  123  NaN
4  123  NaN
Run Code Online (Sandbox Code Playgroud)