简体   繁体   English

将一栏数据追加到现有数据框

[英]Append data with one column to existing dataframe

I want append a list of data to a dataframe such that the list will appear in a column ie: 我想将数据列表追加到数据框,以便该列表将出现在列中,即:

#Existing dataframe:
[A, 20150901, 20150902
 1  4  5
 4  2  7]

#list of data to append to column A:
data = [8,9,4]

#Required dataframe
[A, 20150901, 20150902
 1  4  5
 4  2  7
 8, 0  0
 9  0  0
 4  0  0]

I am using the following: 我正在使用以下内容:

df_new = df.copy(deep=True)
#I am copying and deleting data as column names are type Timestamp and easier to reuse them
df_new.drop(df_new.index, inplace=True)
for item in data_list:
    df_new = df_new.append([{'A':item}], ignore_index=True)
df_new.fillna(0, inplace=True) 
df = pd.concat([df, df_new],  axis=0, ignore_index=True)   

But doing this in a loop is inefficient plus I get this warning: 但是循环执行此操作效率很低,而且我得到以下警告:

Passing list-likes to .loc or [] with any missing label will raise
KeyError in the future, you can use .reindex() as an alternative.

Any ideas on how to overcome this error and append 2 dataframes in one go? 关于如何克服此错误并一次性添加2个数据框的任何想法?

I think need concat new DataFrame with column A , then reindex if want same order of columns and last replace missing values by fillna : 我认为需要concat与列新的数据框A ,然后reindex如果要列相同的次序,并持续通过替换缺失值fillna

data = [8,9,4]
df_new = pd.DataFrame({'A':data})

df = (pd.concat([df, df_new], ignore_index=True)
        .reindex(columns=df.columns)
        .fillna(0, downcast='infer'))
print (df)
   A  20150901  20150902
0  1         4         5
1  4         2         7
2  8         0         0
3  9         0         0
4  4         0         0

I think, you could do something like this. 我认为,您可以做这样的事情。

df = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB'))
df2 = pd.DataFrame({'A':[8,9,4]})
df.append(df2).fillna(0)

    A    B
0   1   2.0
1   3   4.0
0   8   0.0
1   9   0.0
2   4   0.0

maybe you can do it in this way: 也许您可以通过以下方式做到这一点:

new = pd.DataFrame(np.zeros((3, 3))) #Create a new zero dataframe:
new[0]=[8,9,4] #add values
existed_dataframe.append(new) #and merge both dataframes

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM