首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据串接数据

数据串接数据
EN

Stack Overflow用户
提问于 2020-05-07 06:05:43
回答 1查看 60关注 0票数 0

嗨,下面的代码只提供给我上一次file.There的数据,这是concat或for循环中的一个问题。我正在从两个文件中读取数据。每个列都应该包含近350行,3列符合for循环中的条件。所以在最后,数据帧应该给出近700×3的数据帧。但它只显示最后一个文件中的数据。

代码语言:javascript
复制
import glob
from pathlib import Path

path = Path(r'C:\Users\PC\Desktop\datafiles')
filenames = path.glob('*.txt')
toconcat = []
for i in filenames:
    data1 = pd.read_csv(i, sep="\t", header=None)
    data1.columns = ['number','ab','cd','as','sd','dfg']
    dataset1 = pd.DataFrame(data1.loc[data1.number==1,['number','ab','cd']])
    toconcat.append(dataset1)

result = pd.concat(toconcat)
result

但是当我使用result.shape时,它显示了700乘3,这里有什么问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-07 09:07:44

我甚至创建了一个“更宽”的例子,传递也键参数(“源标记”)。

源文件Input_1.txt

代码语言:javascript
复制
1   ab1 cd1 as1 sd1 dfg1
1   ab2 cd2 as2 sd2 dfg2
1   ab3 cd3 as3 sd3 dfg3
2   ab4 cd4 as4 sd4 dfg4

源文件Input_2.txt

代码语言:javascript
复制
1   ab5 cd5 as5 sd5 dfg5
1   ab6 cd6 as6 sd6 dfg6
1   ab7 cd7 as7 sd7 dfg7
2   ab8 cd8 as8 sd8 dfg8

(上述两个文件都是选项卡分隔的)。

守则如下:

代码语言:javascript
复制
toconcat = []
keys = []
path = Path(r'C:\Users\...')  # Replace dots with your path
filenames = path.glob('*.txt')
for i in filenames:
    data1 = pd.read_csv(i, sep='\t', names=['number', 'ab', 'cd', 'as', 'sd', 'dfg'])
    dataset1 = data1.loc[data1.number==1, ['number', 'ab', 'cd']]
    toconcat.append(dataset1)
    keys.append(i.stem)
result = pd.concat(toconcat, keys=keys)
print(result)

注意,列名最早可以在read_csv中传递(就像我做的那样)。

对于我的输入文件,结果是:

代码语言:javascript
复制
           number   ab   cd
Input_1 0       1  ab1  cd1
        1       1  ab2  cd2
        2       1  ab3  cd3
Input_2 0       1  ab5  cd5
        1       1  ab6  cd6
        2       1  ab7  cd7

所以你的代码看起来没问题。我的代码只是在结果包含MultiIndex的这个细节上有所不同,顶层显示了每一行的起源,从而简化了对正在发生的事情的跟踪。

只要尝试我的代码和我的输入文件,结果应该和我的一样。

然后用您的文件替换我的一个文件(并运行代码)。最后,用第二个文件替换第二个我的文件,然后再次运行代码。

最后删除键参数,在结果中有一个普通的索引。

可能你的错误来源在其他地方。

顺便说一句:您不需要导入glob,因为您只使用路径中的glob。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61650990

复制
相关文章

相似问题

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