我使用df.iloc[I]在数据帧的每一行上分配(ori+gap)。但我得到了“没有为对象类型系列命名为1的轴”错误。我不明白为什么
df1 = pd.read_csv('异常销量监控_0127_to Xiaolei Eagle send.csv',low_memory=False)
df2 = pd.read_csv('test0412.csv',dtype = {'Actual':float})
gap = 0
for i in range(len(df2)):
ym = df2['YM'].iloc[i]
kcode = df2['REPKCode'].iloc[i]
fn = df2['FamilyNameE'].iloc[i]
ori = float(df2['Actual'].iloc[i])
filt = (df1['YM'] == ym )& (df1['REPKCode'] == kcode) & (df1['FamilyNameE'] == fn))
gap = df1[filt]['Actual']
df2['Actual'].iloc[i] = (ori + gap)
df2.to_csv('after.csv',index=False)
我想这里的问题是,
df2["YM"].iloc[i]
因为当您被键入
df2["YM"]
时,它会从数据帧df2
返回YM
列。 因此,这意味着您正试图通过键入df2["YM"].iloc[i]
从列中获取列。试试看,
df2.iloc[i]
问题如下
filt的值将为1或0,因为您正在检查多个条件
如果上述条件为真,filt将被指定为1,否则为0
所以你的条件是真的,filt==1
现在进入下一行
你真的在这么做吗
它试图在df1数据帧中找到列“1”,因为没有列作为“1”,这就是它给您错误的原因
编辑
回复您的评论-我如何在df1中获得与“YM”、“REPKCode”、“familyName”匹配的“实际”值?
为此,你需要写在下面几行
并删除下面的行
相关问题 更多 >
编程相关推荐