【问题标题】:Unexpected behavior when concatenating pandas dataframes连接 pandas 数据帧时的意外行为
【发布时间】:2021-06-11 17:53:37
【问题描述】:

我有一个相对简单的任务:我有 N 个 pandas 数据帧,每个数据帧有 3 行数据。大多数列名与所有 N 个数据框匹配(某些数据框可能缺少 1 或 2 列)。我想创建 3 个包含 N 行的新数据帧,这样它是通过连接这些行形成的,这样第 i 个新数据帧将包含所有 N 个数据帧的行索引 i 中的所有行。以下是我的尝试。

listOfRows1 = listOfRows2 = listOfRows3 = []
for i in range(N):
   dfN = pd.read_csv("filename"+str(i)+".csv")
   dfN["Index"] = range(1,4)
   listOfRows1.append(dfN[dfN["Index"]==1])
   listOfRows2.append(dfN[dfN["Index"]==2])
   listOfRows3.append(dfN[dfN["Index"]==3])
newdf1 = pd.concat(listOfRows1)
newdf2 = pd.concat(listOfRows2)
newdf3 = pd.concat(listOfRows3)

结果是一个格式奇怪的 df,它有一些正确的行,但与我想要的输出不匹配,即使当我打印 listOfRows 时,它们看起来像是从 N 个数据帧中提取了正确的行。似乎对于每个新的 df,结果只是相互连接的整个 N 个旧数据帧,而不仅仅是所需的相应行。

提前致谢。

【问题讨论】:

    标签: python pandas csv dictionary


    【解决方案1】:

    解决方案是简单地将第一行从

    listOfRows1 = listOfRows2 = listOfRows3 = []
    

    listOfRows1 = []
    listOfRows2 = []
    listOfRows3 = []
    

    因此,当附加到循环中的向量时,行不会附加到所有向量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-02
      • 2018-10-26
      • 2022-06-21
      • 1970-01-01
      • 2017-03-01
      • 2016-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多