首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将数据写入.csv文件:仅使用函数最后一次迭代的值(Python、pandas)

将数据写入.csv文件:仅使用函数最后一次迭代的值(Python、pandas)
EN

Stack Overflow用户
提问于 2017-06-30 18:02:01
回答 1查看 185关注 0票数 1

我正在写一个代码,可以读取.fits文件,并区分明亮和黑暗的图像。为此,我读取了图像,获取了图像像素的一个子集,并创建了一个函数来确定该子集中的所有像素值是否都高于某个阈值。最后,我想创建一个存储结果的.csv文件。

我的函数写成如下:

代码语言:javascript
运行
复制
    def function(subset): 
        if np.all(subset > x):
            return True
        else:
            return False

该函数似乎起作用了,对于明亮的图像,返回"True“,对于黑暗的图像,返回"False”。

然而,下一部分不会。创建.csv文件的代码如下:

代码语言:javascript
运行
复制
csv_file = open('new_file.csv', 'wb')
writer = csv.writer(csv_file)
for f in filenames:
    writer.writerow([f, function(subset)])

csv_file.close()

然后,当我将.csv文件作为数据帧读入时,我发现函数返回没有继续,并且所有文件都返回"True“值,无论是错误的还是正确的。下面是我的数据帧的显示方式:

代码语言:javascript
运行
复制
    "filename"   "function result"
0   file1.fits    True
1   file2.fits    True
2   file3.fits    True

其中,我知道当执行函数" function (subset)“时,如果file2.fit是一个”暗“图像,它将返回值"False”。

有什么建议吗?非常感谢您的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-30 19:07:14

您需要从Series.apply调用的函数返回TrueFalse

代码语言:javascript
运行
复制
np.random.seed(1)

def function(x):
    #print (x)
    #sample generator 
    y = np.random.choice([True, False], 1)[0]
    if y:
        return True
    else:
        return False

df['result'] = df['filename'].apply(function)
print (df)
     filename  result
0  file1.fits   False
1  file2.fits   False
2  file3.fits    True
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44843805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档