【问题标题】:Pandas DataFrame concatenation in for loop returns empty DataFramefor循环中的Pandas DataFrame连接返回空DataFrame
【发布时间】:2020-01-07 00:58:48
【问题描述】:

我正在尝试将 DataFrame 的几个循环数据元素堆叠在一起以更改 DataFrame 尺寸。例如。从 100x20 变为 500x4。

Sample 11x7 input:
    0   1   2   3   4   5   6   7       
0   1   713 1622    658 1658    620 1734        
1   2   714 1623    657 1700    618 1735    
2   3   714 1624    656 1701    617 1736    
3   4   714 1625    655 1702    615 1738    
4   5   714 1626    654 1703    614 1739    
5   6   713 1627    653 1705    612 1740    
6   7   713 1628    651 1706    610 1741    
7   8   713 1629    650 1707    609 1742    
8   9   713 1630    649 1709    607 1744    
9   10  713 1631    648 1710    605 1745    
10  11  712 1632    646 1711    604 1746    

Desired 32x3 output:
0   1   713 1622    
1   2   714 1623    
2   3   714 1624    
3   4   714 1625    
4   5   714 1626    
5   6   713 1627    
6   7   713 1628    
7   8   713 1629    
8   9   713 1630    
9   10  713 1631    
10  11  712 1632    
11  1   658 1658    
12  2   657 1700    
13  3   656 1701    
14  4   655 1702    
15  5   654 1703    
16  6   653 1705    
17  7   651 1706    
18  8   650 1707    
19  9   649 1709    
20  10  648 1710    
21  11  646 1711    
22  1   620 1734        
23  2   618 1735    
24  3   617 1736    
25  4   615 1738    
26  5   614 1739    
27  6   612 1740    
28  7   610 1741    
29  8   609 1742    
30  9   607 1744    
31  10  605 1745    
32  11  604 1746

我花了很多时间检查这个,我找不到比这更好的东西了

pd.concat([df1, df2], ignore_index=True) 
or 
df1.append(df2, ignore_index=True)

,在这种情况下应该产生相同的解决方案。但是,无论使用哪个选项,它都将被放置在循环的末尾,该循环会生成临时 DataFrame,这些临时 DataFrame 将与永久 DataFrame 连接或附加到永久 DataFrame 上。临时 df 的结果很好,但据称简单的连接步骤始终失败。我得到一个带有正确标题的空 DataFrame...


for l in range(1,13):
    s1 = l * 4 - 4
    s2 = l * 4 
    dft = df0.iloc[:, s1:s2]
    dft.columns = new_col
    #pd.concat([df1, dft], ignore_index=True, axis = 0)
    #df1.append(dft, ignore_index=True)
df1.head()

任何被注释掉的行都应该产生一个 4 宽的临时 DataFrames 堆栈...我得到一个带有正确标题且没有错误消息的空 DataFrame...

【问题讨论】:

  • 请提供一些示例输入和所需的输出:可能是 10x2 和 5x4 数据?
  • 默认情况下 pd.concat() 和 df.append() 都没有到位。看看df1 = pd.concat(etc...)是否解决了。
  • 可能重命名列
  • @Aryerez,谢谢!问题解决了。

标签: python pandas stack append concat


【解决方案1】:

由@Aryerez 在上面的评论中解决: 默认情况下,pd.concat() 和 df.append() 都不存在。看看 df1 = pd.concat(etc...) 是否解决它。

【讨论】:

    猜你喜欢
    • 2017-08-08
    • 2021-12-13
    • 2018-08-02
    • 2018-07-26
    • 1970-01-01
    • 2019-05-22
    • 2016-08-04
    • 1970-01-01
    • 2020-01-19
    相关资源
    最近更新 更多