在创建新列时确定其位置

时间:2019-04-24 23:49:49

标签: pandas dataframe

我只想将要创建的新列放在数据框的开头,而不是出现在末尾。我读过的所有答案都使用“插入”,这是我当前解决方案中使用的,但是我认为这不必要地复杂。我相信有更好的解决方案。

我正在创建一个连接2列的列。

df_temp = pd.DataFrame()
df_temp['Result_ID'] =df['ID']+'_'+df['Execution_Date'].dt.month.astype(str) + df['Execution_Date'].dt.day.astype(str) + df['Execution_Date'].dt.year.astype(str)
df.insert(loc = 0, column = 'Result_ID', value = df_temp )

如何在开始时直接在df中插入此新列?

3 个答案:

答案 0 :(得分:0)

这是使用concat

的一种方法
pd.concat([pd.DataFrame({'Result_ID': df_temp},index=df.index),df],axis=1)

答案 1 :(得分:0)

因为df_temp是具有一列的数据帧,并且df_tempdf具有可以使用join的相同索引

df_temp.join(df)

如果您已经将'Result_ID'列分配到df的末尾,则可以使用set_indexreset_index

df.set_index('Result_ID').reset_index()

答案 2 :(得分:0)

您可以使用reindex,在数据框的开头添加新列,如下所示,

df = pd.DataFrame([[2,4],[4,3],[5,3]], columns = ['A', 'B'])
new = [3,4,4]
df.reindex(['C', *df.columns], axis=1).assign(C=new)
df

希望有帮助。 但是,我认为insert会更容易处理,因为它提供了更大的灵活性来处理数据,

df.insert(0, 'C',new )
df