Python pandas dataframe concat正在提供不需要的NA/NaN列

Python pandas dataframe concat正在提供不需要的NA/NaN列,python,pandas,dataframe,concat,na,Python,Pandas,Dataframe,Concat,Na,与此示例中的水平方向不同,我尝试垂直方向: import pandas a=[['Date', 'letters', 'numbers', 'mixed'], ['1/2/2014', 'a', '6', 'z1'], ['1/2/2014', 'a', '3', 'z1'], ['1/3/2014', 'c', '1', 'x3']] df = pandas.DataFrame.from_records(a[1:],columns=a[0]) f=[] for i in range(0,le

与此示例中的水平方向不同,我尝试垂直方向:

import pandas
a=[['Date', 'letters', 'numbers', 'mixed'], ['1/2/2014', 'a', '6', 'z1'], ['1/2/2014', 'a', '3', 'z1'], ['1/3/2014', 'c', '1', 'x3']]
df = pandas.DataFrame.from_records(a[1:],columns=a[0])

f=[]
for i in range(0,len(df)):
    f.append(df['Date'][i] + ' ' + df['letters'][i])

df['new']=f

c=[x for x in range(0,5)]
b=[]
b += [['NA'] * (5 - len(b))]
df_a = pandas.DataFrame.from_records(b,columns=c)

df_b=pandas.concat([df,df_a], ignore_index=True)
df_b
输出与
df_b=pandas.concat([df,df_a],轴=0)相同

结果:

     0    1    2    3    4      Date letters mixed         new numbers
0  NaN  NaN  NaN  NaN  NaN  1/2/2014       a    z1  1/2/2014 a       6
1  NaN  NaN  NaN  NaN  NaN  1/2/2014       a    z1  1/2/2014 a       3
2  NaN  NaN  NaN  NaN  NaN  1/3/2014       c    x3  1/3/2014 c       1
0   NA   NA   NA   NA   NA       NaN     NaN   NaN         NaN     NaN
期望的:

       Date letters numbers mixed         new
0  1/2/2014       a       6    z1  1/2/2014 a
1  1/2/2014       a       3    z1  1/2/2014 a
2  1/3/2014       c       1    x3  1/3/2014 c
0  NA             NA      NA   NA  NA

我会直接用正确的列创建一个数据框
df_a

通过对代码进行一点重构,它将

import pandas
a=[['Date', 'letters', 'numbers', 'mixed'], \
   ['1/2/2014', 'a', '6', 'z1'],\
   ['1/2/2014', 'a', '3', 'z1'],\
   ['1/3/2014', 'c', '1', 'x3']]
df = pandas.DataFrame.from_records(a[1:],columns=a[0])
df['new'] = df['Date'] + ' ' + df['letters']

n = len(df.columns)
b = [['NA'] * n]
df_a = pandas.DataFrame.from_records(b,columns=df.columns)
df_b = pandas.concat([df,df_a])
它给

       Date letters numbers mixed         new
0  1/2/2014       a       6    z1  1/2/2014 a
1  1/2/2014       a       3    z1  1/2/2014 a
2  1/3/2014       c       1    x3  1/3/2014 c
0        NA      NA      NA    NA          NA
最终:

df_b = pandas.concat([df,df_a]).reset_index(drop=True)
它给

       Date letters numbers mixed         new
0  1/2/2014       a       6    z1  1/2/2014 a
1  1/2/2014       a       3    z1  1/2/2014 a
2  1/3/2014       c       1    x3  1/3/2014 c
3        NA      NA      NA    NA          NA

我会直接用正确的列创建一个数据框
df_a

通过对代码进行一点重构,它将

import pandas
a=[['Date', 'letters', 'numbers', 'mixed'], \
   ['1/2/2014', 'a', '6', 'z1'],\
   ['1/2/2014', 'a', '3', 'z1'],\
   ['1/3/2014', 'c', '1', 'x3']]
df = pandas.DataFrame.from_records(a[1:],columns=a[0])
df['new'] = df['Date'] + ' ' + df['letters']

n = len(df.columns)
b = [['NA'] * n]
df_a = pandas.DataFrame.from_records(b,columns=df.columns)
df_b = pandas.concat([df,df_a])
它给

       Date letters numbers mixed         new
0  1/2/2014       a       6    z1  1/2/2014 a
1  1/2/2014       a       3    z1  1/2/2014 a
2  1/3/2014       c       1    x3  1/3/2014 c
0        NA      NA      NA    NA          NA
最终:

df_b = pandas.concat([df,df_a]).reset_index(drop=True)
它给

       Date letters numbers mixed         new
0  1/2/2014       a       6    z1  1/2/2014 a
1  1/2/2014       a       3    z1  1/2/2014 a
2  1/3/2014       c       1    x3  1/3/2014 c
3        NA      NA      NA    NA          NA

我会直接用正确的列创建一个数据框
df_a

通过对代码进行一点重构,它将

import pandas
a=[['Date', 'letters', 'numbers', 'mixed'], \
   ['1/2/2014', 'a', '6', 'z1'],\
   ['1/2/2014', 'a', '3', 'z1'],\
   ['1/3/2014', 'c', '1', 'x3']]
df = pandas.DataFrame.from_records(a[1:],columns=a[0])
df['new'] = df['Date'] + ' ' + df['letters']

n = len(df.columns)
b = [['NA'] * n]
df_a = pandas.DataFrame.from_records(b,columns=df.columns)
df_b = pandas.concat([df,df_a])
它给

       Date letters numbers mixed         new
0  1/2/2014       a       6    z1  1/2/2014 a
1  1/2/2014       a       3    z1  1/2/2014 a
2  1/3/2014       c       1    x3  1/3/2014 c
0        NA      NA      NA    NA          NA
最终:

df_b = pandas.concat([df,df_a]).reset_index(drop=True)
它给

       Date letters numbers mixed         new
0  1/2/2014       a       6    z1  1/2/2014 a
1  1/2/2014       a       3    z1  1/2/2014 a
2  1/3/2014       c       1    x3  1/3/2014 c
3        NA      NA      NA    NA          NA

我会直接用正确的列创建一个数据框
df_a

通过对代码进行一点重构,它将

import pandas
a=[['Date', 'letters', 'numbers', 'mixed'], \
   ['1/2/2014', 'a', '6', 'z1'],\
   ['1/2/2014', 'a', '3', 'z1'],\
   ['1/3/2014', 'c', '1', 'x3']]
df = pandas.DataFrame.from_records(a[1:],columns=a[0])
df['new'] = df['Date'] + ' ' + df['letters']

n = len(df.columns)
b = [['NA'] * n]
df_a = pandas.DataFrame.from_records(b,columns=df.columns)
df_b = pandas.concat([df,df_a])
它给

       Date letters numbers mixed         new
0  1/2/2014       a       6    z1  1/2/2014 a
1  1/2/2014       a       3    z1  1/2/2014 a
2  1/3/2014       c       1    x3  1/3/2014 c
0        NA      NA      NA    NA          NA
最终:

df_b = pandas.concat([df,df_a]).reset_index(drop=True)
它给

       Date letters numbers mixed         new
0  1/2/2014       a       6    z1  1/2/2014 a
1  1/2/2014       a       3    z1  1/2/2014 a
2  1/3/2014       c       1    x3  1/3/2014 c
3        NA      NA      NA    NA          NA

如果您使用的是最新版本,这将满足您的需求

df.ix[len(df), :]='NA'
编辑: 或者,如果您想要concat,当您定义
df_a
时,使用df的列作为列

df_a = pandas.DataFrame.from_records(b,columns=df.columns)

如果您使用的是最新版本,这将满足您的需求

df.ix[len(df), :]='NA'
编辑: 或者,如果您想要concat,当您定义
df_a
时,使用df的列作为列

df_a = pandas.DataFrame.from_records(b,columns=df.columns)

如果您使用的是最新版本,这将满足您的需求

df.ix[len(df), :]='NA'
编辑: 或者,如果您想要concat,当您定义
df_a
时,使用df的列作为列

df_a = pandas.DataFrame.from_records(b,columns=df.columns)

如果您使用的是最新版本,这将满足您的需求

df.ix[len(df), :]='NA'
编辑: 或者,如果您想要concat,当您定义
df_a
时,使用df的列作为列

df_a = pandas.DataFrame.from_records(b,columns=df.columns)

另外,当你得到
df['new']
有一个更简单的方法:
df['new']=df['Date']+'+df['new'].
还有一个更简单的方法:
df['new']=df['Date']+'+df['letters'.
还有一个更简单的方法:
df['new']=df'+]
另外,当您获得
df['new']
时,有一种更简单的方法:
df['new']=df['Date']+''+df['letters']