我正在尝试创建一个新的数据框,从另一个数据框的列中填充数据。
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甚至堆栈溢出都很新,请原谅我的错误代码或我违反的任何内容。
答案 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