【发布时间】:2018-11-22 00:46:13
【问题描述】:
我有一个数据框:
df = pd.DataFrame({'A':np.random.randint(1,10, 10), 'B':np.random.randint(1,10, 10)})
def sumf(row):
result = None
if row['A']>= row['B']:
result = row['A'] - row['B']
else:
result = row['B'] - row['A']
return result
df.loc[:,'C'] = df.apply(sumf, axis = 1)
df['D'] = df.apply(sumf, axis = 1)
my_var = 'zero'
df['E'] = my_var
C 和 D 列在查看/复制方面有什么区别?用zero 填充列E 是否正确?
我有一个具有相同数据和逻辑的类似数据框(仅在另一个 jupyter 笔记本中),但我收到警告:
/usr/local/lib/python3.5/dist-packages/ipykernel_launcher.py:19: SettingWithCopyWarning:试图在一个副本上设置一个值 从 DataFrame 切片。尝试使用 .loc[row_indexer,col_indexer] = 取而代之的价值
当我尝试这些行时:
df['D'] = df.apply(sumf, axis = 1)
my_var = 'zero'
df['E'] = my_var
【问题讨论】:
-
我没有收到此错误。您正在运行的另一段代码是否会导致上游出现此错误?
-
抱歉,不知道如何将格式化的代码作为评论发布。所以我的生产代码是一样的(除了列名、计算类型和数据)。而且我也没有收到警告(当我运行上面的代码时)但是当我运行我的生产代码时我确实收到了这个警告。
标签: python-3.x pandas dataframe