当前位置: 首页 > 面试题库 >

使用循环填充空的python数据框

海翼
2023-03-14
问题内容

可以说我想用循环中的值创建并填充一个空的数据框。

import html" target="_blank">pandas as pd
import numpy as np

years = [2013, 2014, 2015]
dn=pd.DataFrame()
for year in years:
    df1 = pd.DataFrame({'Incidents': [ 'C', 'B','A'],
                 year: [1, 1, 1 ],
                }).set_index('Incidents')
    print (df1)
    dn=dn.append(df1, ignore_index = False)

即使忽略索引为false,附录也会提供一个对角矩阵:

>>> dn
       2013  2014  2015
Incidents                  
C             1   NaN   NaN
B             1   NaN   NaN
A             1   NaN   NaN
C           NaN     1   NaN
B           NaN     1   NaN
A           NaN     1   NaN
C           NaN   NaN     1
B           NaN   NaN     1
A           NaN   NaN     1

[9 rows x 3 columns]

它看起来应该像这样:

>>> dn
       2013  2014  2015
Incidents                  
C             1   1   1
B             1   1   1
A             1   1   1

[3 rows x 3 columns]

有更好的方法吗?有没有办法解决追加?

我的熊猫版本为‘0.13.1-557-g300610e’


问题答案:
import pandas as pd

years = [2013, 2014, 2015]
dn = []
for year in years:
    df1 = pd.DataFrame({'Incidents': [ 'C', 'B','A'],
                 year: [1, 1, 1 ],
                }).set_index('Incidents')
    dn.append(df1)
dn = pd.concat(dn, axis=1)
print(dn)

产量

           2013  2014  2015
Incidents                  
C             1     1     1
B             1     1     1
A             1     1     1

请注意,调用pd.concat 一次 的循环之外更多的时间效率比调用pd.concat与循环的每个迭代。

每次调用时,都会pd.concat为新的DataFrame分配新的空间,并将来自每个组件DataFrame的所有数据复制到新的DataFrame中。如果pd.concat从for循环中进行调用,那么最终将按照n**2副本的顺序进行操作,这n是年数。

如果您在列表中累积部分DataFrame并在列表pd.concat外调用一次,则Pandas仅需要执行nmake的副本dn



 类似资料:
  • 我是不是误解了什么?据我所知,Julia中的Dataframes与R中的Dataframes的工作方式不同,但我无法全神贯注于如何使其工作。

  • 问题内容: 这个问题已经在这里有了答案 : 如何并行地遍历两个列表? (7个答案) 5年前关闭。 我正在尝试使用for循环创建字典。这是我的代码: 输出: 为什么? 我正计划将其输出: 为什么不以这种方式输出?我们如何使其正确输出? 问题答案: 或者

  • 我试着学习如何从for循环构建和填充pandas数据帧?但我似乎无法将我的价值观写入我的专栏。 最终,我从一个网页中获取数据,并希望将其放入一个数据框中。 我的标题预定义为: 现在我有了在for循环中得到的值,如何将这些行写入每一列,然后重复到第1列到第17列,再重复到下一行? 示例输出行1 示例输出第2行 预期产量 任何帮助都将不胜感激。

  • 我正在尝试合并两个数据帧: 第一个数据帧,,用INTEGERS/STRINGS填充 左边的数据框一起被整数/列表填充。 当我使用pandas函数时,新的数据框将用NaN填充右侧的数据框,而不是列表 我期望使用两个原始数据帧中的值创建一个新的合并数据帧。相反,在新的数据框中,“control”数据框中的所有值都是正确的,但“together”数据框中的所有列表都是正确的 以下是一些样本数据: 以下是

  • 我对JAVA非常陌生,我需要帮助获得某种嵌套循环,我认为这是一个用户输入,并将输入放入数组中。还有一个哨兵-1。我知道为别人做作业是不受欢迎的,而这根本不是我所要求的。我希望有人能帮我解释一下,而不是帮我写代码。我刚开始需要帮助。我搞不懂这个节目的第一部分: 我必须使用[4][5]的2D数组,其中4是销售人员的数量,5是他们销售的产品的数量。我必须向用户询问人名(1-4),然后再询问已售出的产品(

  • 问题内容: 我正在尝试使用我的Derby数据库数据填充Netbeans GUI-builder jTable。 我在Account.java类中使用以下代码: 理想情况下,我希望能够返回其中包含参数数据和列的tableModel,因为我知道在GUI中执行此方法是一种不好的做法。在线上的所有教程都没有显示如何将数据发送到另一个类,它们只是在GUI类中执行数据库代码。 我有一个错误,它看不到数据和列,

  • 我在Account.java类中使用以下代码: 理想情况下,我希望能够返回包含参数数据和列的tableModel,因为我知道在我的GUI中使用这种方法是不好的做法。所有在线教程都没有显示如何将数据发送到另一个类,它们只是在GUI类中执行数据库代码。 我有一个错误,它无法看到数据和列,因为它们是在我的方法的一个不可访问的部分中声明和使用的。在我完成这些之后,我需要找到一种方法来将它传递给我的GUI类

  • 我试图对文本进行实体分析,我想把结果放在数据框中。目前,结果不存储在字典中,也不存储在数据框中。结果用两个函数提取。 df: 我有以下代码: 该代码给出了以下结果: 我已经在函数中创建了和一个数据框。这个线程解释了在循环中附加到数据帧是没有效率的。我不知道如何以有效的方式填充数据框。这些线程与我的问题相关,但它们解释了如何从存量数据填充数据框。当我尝试使用并返回时,我得到一个错误: 在entity