gpt4 book ai didi

python - 从文本文件中读取数据并将其分配给数据框的最快方法是什么?

转载 作者:太空狗 更新时间:2023-10-29 21:25:35 24 4
gpt4 key购买 nike

我想通过读取文本文件来创建一个多索引DataFrame。创建多索引然后使用 df.loc[[],[]] 从文本文件向其分配数据,或者将行连接到 DataFrame 是否更快? > 并在末尾设置 DataFrame 的索引?或者,使用列表或 dict 来存储从文件中读取的数据,然后从中创建一个 DataFrame 是否更快?是否有更 pythonic 或更快的选项?

示例文本文件:

A = 1
B = 1
C data
0 1
1 2
A = 1
B = 2
C data
1 3
2 4
A = 2
B = 1
C data
0 5
2 6

输出数据框:

A B C data
1 1 0 1
1 2
1 2 1 3
2 4
2 1 0 5
2 6

1 月 18 日更新: 这链接到 How to parse complex text files using Python?我还写了一个blog article explaining how to parse complex files to beginners .

最佳答案

在 pandas 中逐元素查找是一项昂贵的操作,按索引对齐也是如此。我会将所有内容读入数组,创建一个值的 DataFrame,然后直接设置层次索引。如果可以避免追加或查找,通常会快得多。

这是一个示例结果,假设您有一个包含所有内容的二维数组数据集:

In [106]: dataset
Out[106]:
array([[1, 1, 0, 1],
[1, 1, 1, 2],
[1, 2, 1, 3],
[1, 2, 2, 4],
[2, 1, 0, 5],
[2, 1, 2, 6]])

In [107]: pd.DataFrame(dataset,columns=['A','B','C', 'data']).set_index(['A', 'B', 'C'])
...:
Out[107]:
data
A B C
1 1 0 1
1 2
2 1 3
2 4
2 1 0 5
2 6

In [108]: data_values = dataset[:, 3]
...: data_index = pd.MultiIndex.from_arrays( dataset[:,:3].T, names=list('ABC'))
...: pd.DataFrame(data_values, columns=['data'], index=data_index)
...:
Out[108]:
data
A B C
1 1 0 1
1 2
2 1 3
2 4
2 1 0 5
2 6

In [109]: %timeit pd.DataFrame(dataset,columns=['A','B','C', 'data']).set_index(['A', 'B', 'C'])
%%timeit
1000 loops, best of 3: 1.75 ms per loop

In [110]: %%timeit
...: data_values = dataset[:, 3]
...: data_index = pd.MultiIndex.from_arrays( dataset[:,:3].T, names=list('ABC'))
...: pd.DataFrame(data_values, columns=['data'], index=data_index)
...:
1000 loops, best of 3: 642 µs per loop

关于python - 从文本文件中读取数据并将其分配给数据框的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42829463/

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