在迭代数据帧行时,无法将行数据复制到pandas中的数据帧

时间:2017-03-30 14:26:41

标签: python pandas dataframe

我正在尝试创建一个新的数据框,从另一个数据框的列中填充数据。

import pandas as pd

df = {'account_number' : [1,2,3,4,5,6],
 'id_value' : [101,101,201,201,301,301]}
df = pd.DataFrame(df)
out = pd.DataFrame(columns=['node1','node2','relation'])

for index,row in df.iterrows():
    if (index % 2 == 0):
        out['node1'] = row['account_number']
    else:
        out['node2'] = row['account_number']
        out['relation'] = 'SELF'

out

我正在努力实现:

node1    node2    relation
  1        2       SELF
  3        4       SELF
  5        6       SELF

我似乎无法理解代码中的缺陷。当我打印值[account_number]时,它们打印正确但是当我将它们复制到我的结果数据框时,它们不会被复制。

我对python,pandas甚至堆栈溢出都很新,请原谅我的错误代码或我违反的任何内容。

1 个答案:

答案 0 :(得分:0)

您正在为空数据框的列分配值,根据广播,该列将不执行任何操作,因为它最初为空。

out = pd.DataFrame(columns=['node1','node2','relation'])
out['node1'] = 1
out
# node1 node2   relation

您可以提供行索引来避免这种情况:

for index,row in df.iterrows():
    if (index % 2 == 0):
        out.loc[index//2, 'node1'] = row['account_number']
    else:
        out.loc[index//2, 'node2'] = row['account_number']
        out.loc[index//2, 'relation'] = 'SELF'
​
out
#node1  node2   relation
#0   1      2       SELF
#1   3      4       SELF
#2   5      6       SELF