python - 如何从 for 循环构建和填充 Pandas 数据框?

标签 python pandas

这是我正在运行的代码的一个简单示例,我希望将结果放入 pandas 数据框中(除非有更好的选择):

for p in game.players.passing():
    print p, p.team, p.passing_att, p.passer_rating()

R.Wilson SEA 29 55.7
J.Ryan SEA 1 158.3
A.Rodgers GB 34 55.8

使用此代码:

d = []
for p in game.players.passing():
    d = [{'Player': p, 'Team': p.team, 'Passer Rating':
        p.passer_rating()}]

pd.DataFrame(d)

我可以得到:

    Passer Rating   Player      Team
  0 55.8            A.Rodgers   GB

这是一个 1x3 数据框,我理解 为什么 它只有一行,但我不知道如何使其具有正确顺序的列的多行。理想情况下,该解决方案将能够处理 n 行数(基于 p),如果列数由请求的统计数据数设置,那将是很棒的(尽管不是必需的)。有什么建议么?提前致谢!

最佳答案

最简单的答案是 Paul H 所说的:

d = []
for p in game.players.passing():
    d.append(
        {
            'Player': p,
            'Team': p.team,
            'Passer Rating':  p.passer_rating()
        }
    )

pd.DataFrame(d)

但是,如果您真的想“从循环中构建和填充数据框”,(顺便说一句,我不建议这样做),您可以这样做。

d = pd.DataFrame()

for p in game.players.passing():
    temp = pd.DataFrame(
        {
            'Player': p,
            'Team': p.team,
            'Passer Rating': p.passer_rating()
        }
    )

    d = pd.concat([d, temp])

关于python - 如何从 for 循环构建和填充 Pandas 数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28056171/

相关文章:

python - 定义更复杂的静态数组

python - 如何通过 aiohttp 在 Web 浏览器/HTML 页面上流式传输视频?

python - 更改 pandas 数据帧列中所有行的值

python - Pandas 中的分层组大小

python - 左加入但保持一个观察

python - 尝试运行 Python 包时权限被拒绝

python - Celery-Flower 数据库的格式和解析器

python - Pandas 系列中的尾随字符 - 如何使符号后缀成为前缀?

python - 使用 'loc' 选择多列

python - 如何修复 IndexError : invalid index to scalar variable