gpt4 book ai didi

python - 创建一个数据框作为行索引值和列名称的函数?

转载 作者:行者123 更新时间:2023-12-01 04:26:32 24 4
gpt4 key购买 nike

根据行索引值和列名称创建 pandas 数据框的最佳方法是什么?

因此,对于索引在 X 中、列在 Y 中的 DataFrame,每个值都将是某个 f(x,y),其中 x 在 X 中,y 在 Y 中(例如可以是索引和列名称的串联)

我知道我可以编写一个循环来执行此操作,但认为 pandas 有更快的方法吗?

谢谢!

最佳答案

您可以使用列表理解将值准备为列表列表,然后将列表列表传递给 pd.DataFrame:

import pandas as pd
rows = ['1','2','3']
cols = ['X','Y']

df = pd.DataFrame(([col+row for col in cols] for row in rows),
index=rows, columns=cols)

产量

    X   Y
1 X1 Y1
2 X2 Y2
3 X3 Y3

当然,您可以将 col+row 替换为对任意函数 f 的调用:

df = pd.DataFrame(([f(row, col) for col in cols] for row in rows),
index=rows, columns=cols)

如果和/或很大,那么列表的列表可能需要大量内存。对每个单元格调用一次 f 可能需要一些时间。根据 f,可能有一种更快/更少内存占用的方法来创建 df。例如,要连接行和列标签,您可以使用 np.char.addnp.meshgrid:

import numpy as np
rows = ['1','2','3']
cols = ['X','Y']

df = pd.DataFrame(np.char.add(*np.meshgrid(cols, rows, sparse=True, indexing='xy')),
index=rows, columns=cols)

产生相同的结果。

这会创建 NumPy 数组,而无需创建临时列表列表,从而节省内存。由于np.char.add以向量化方式创建结果NumPy数组,如果rowscols很大,则获得结果的速度比计算每个单元格的 col+row(在 Python 中)。

关于python - 创建一个数据框作为行索引值和列名称的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33056799/

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