gpt4 book ai didi

python - Pandas read.csv 创建元组

转载 作者:行者123 更新时间:2023-12-01 06:36:59 25 4
gpt4 key购买 nike

编辑:底部也有一个更好的循环。 p 是 pandas 的缩写。

我正在尝试引入许多光谱,以 .csv(无标题)形式提供,合并它们,并删除一些列。这些光谱最初以两列格式提供:

col1  col2                       col1-1   col1-2   col2-1   col2-2 ... colm-1   colm-2
X1 Y1 X M spectra to make X1-1 Y1-1 X2-1 Y2-1 ... Xm-1 Ym-1
... ... ...
Xn Yn X1-n Y1-n X2-n Y2-n ... Xm-n Ym-n

其中所有 Col1 都是冗余的。通过删除所有 Col1 或除第一个 Col1 以外的所有内容,光谱就可以在我构建的几个不同工具中使用。

问题出在我的进气循环中:

extension = 'csv'
all_filenames = [i for i in glob.glob('*.{}'.format(extension))]

mergespec=p.DataFrame()
for f in all_filenames:
file = p.read_csv(f, header=None, names=["WVNB", "Int"]),
filemerge = p.merge(file, mergespec, on="WVNB", how='outer')

对象"file"作为元组返回。代码在合并步骤中失败,该步骤被拒绝,因为“只能合并 Series 或 DataFrame 对象,传递了类“元组”” .

我可以确认“all_filenames”已正确填充,并且 read_csv 在该循环之外工作正常。事实上,我在另一个笔记本中有一个类似的循环,可以很好地连接光谱(我在图形生成中使用)。

亲爱的读者们,我对 Python 很陌生,我的代码 90% 都是脚本小子抢劫。请帮助我理解为什么我的 p.read_csv 返回一个元组,或者我如何 biff 这个循环。谢谢!

编辑:Malwaisen 和 Vishwas 都回答了有关元组生成的问题,这确实有效。它引发了匹配列名的其他问题。 但是,阅读 Pandas Merging 101 后我发现了一个更简洁的循环:

filemerge = p.concat([p.read_csv(f, header = None, names=["cm^-1", f]) for f in all_filenames], axis=1)

它取代了从 mergespec=p.Dataframe() 开始的所有内容。这以更少的行数实现了我的目标。另外,由于 f 是列名和文件名,所以我使用 df.columns.str.rstrip('.0.csv')和 lstrip 仅保留文件名中的相关样本 ID 作为列名称。

最佳答案

file=... 末尾有一个逗号。 Python 将其视为一个元组,其中 file[0] 是您的文件,您可以使用 file[1] 等,并附加逗号。

只需删除那个逗号就可以了。或者,如果您很喜欢逗号,请在合并语句中使用 file[0]

关于python - Pandas read.csv 创建元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59619399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com