所以我有一个公式,它根据一个列(在csv文件中)中的一个数字是大于还是小于我的“截止”数字来替换它。并将输出值保存到文档中。第一次运行正常,给了我正确的值。但在接下来的几个循环中,输出值都是0。(而不是1和0的混合)
df是我的csv文件中的一个长的数字文档
d = df_gsuvr # same name as previous
df = pd.DataFrame(data=d)
list = [1.18, 1.12, 1.083, 1, 0.83]
for number in list:
#evaluate the number under the 'y' column according to 'number'
df['y'] = df.apply(lambda x: "1" if float(x['y']) > number else "0", axis=1)
df.to_csv(f"{number}.csv", index = True, header = True)
我没有收到任何代码错误消息。运行完成后,它总是说“processfinished with exit code 0”,但是列表中2-4个值的输出将创建一个0的文档(表示文档中的所有数字都是<;0.83,这是完全错误的)
问题是在第一个循环中修改了df文件。在第一次循环之后,列
df['y']
只包含0或1。这就是为什么在第一个循环之后只有0。你知道吗您可以通过在临时df上执行操作来解决问题。下面是它的样子:
您可以以不同的方式使用
apply
方法。我创建了一个示例数据帧:看起来是这样的:
所以结果可以重现:
PS:您可能还想使用整数
1
和0
,而不是字符串"1"
和"0"
。你知道吗相关问题 更多 >
编程相关推荐