如何从另一行加上新数据在pandas数据框中创建行



假设我有一个pandas数据框df1:

import pandas as pd    
df1col = ['col1', 'col2']
df1 = pd.DataFrame(columns=df1col)
df1.loc[0] = 'a', 'b'

我的目标是创建df2,其中df2的前两列与df1中的相同。我使用列的名称并附加col3col4的列名(是否有更好的方法来做到这一点?)并创建数据框df2:

df2col = df1col
df2col.append('col3')
df2col.append('col4')
df2 = pd.DataFrame(columns=df2col)

现在我只想将df1的第一行(且唯一)添加到df2的第一行,并且我想添加两个新条目(cd),以便填充所有列。我试过:

df2.loc[0] = df1.loc[0], 'c', 'd'

df2.loc[0] = [df1.loc[0], 'c', 'd']

但是都不行。有提示吗?

您可以提取列表,然后添加'c'和'd':

df2.loc[0] = df1.loc[0].tolist() + ['c', 'd']
>>> df2
  col1 col2 col3 col4
0    a    b    c    d

问题是df1。Loc[0]是一个对象,而不是任何结构外的一对值。您可以通过从df1中提取值来修复它。Loc[0]并使用'c'和'd'扩展它们,如下所示:

row1 = [val for val in df1.loc[0]]
row1.extend(['c', 'd'])
df2.loc[0] = row1

你可以复制一个数据框架,在数据框架中添加一个列就像字典一样。

import pandas as pd    
df1col = ['col1', 'col2']
df1 = pd.DataFrame(columns=df1col)
df1.loc[0] = 'a', 'b'
df2 = df1.copy()
df2['col3'] = 'c'
df2['col4'] = 'd'

最新更新