【问题标题】:Python pandas constructing dataframe by looping over columnsPython pandas通过遍历列来构建数据框
【发布时间】:2015-09-02 14:14:54
【问题描述】:

我正在尝试根据从现有数据帧中获得的数据开发一个新的熊猫数据帧,然后考虑新数据帧中先前计算的值。

例如,这里有两个大小相同的数据框。

df1 = pd.DataFrame(np.random.randint(0,10, size = (5, 4)), columns=['1', '2', '3', '4'])
df2 = pd.DataFrame(np.zeros(df1.shape), index=df1.index, columns=df1.columns)

然后我创建了一个列表,作为我的第二个数据框 df2 的起始基础

L = [2,5,6,7]

df2.loc[0] = L

然后对于 df2 的其余行,我想从上一个时间步 (df2) 中获取值并添加 df1 的值。

for i in df2.loc[1:]:
   df2.ix[i] = df2.ix[i-1] + df1

例如,我的数据框应该如下所示:

>>> df1
   1  2  3  4
0  4  6  0  6
1  7  0  7  9
2  9  1  9  9
3  5  2  3  6
4  0  3  2  9
>>> df2
   1  2  3  4
0  2  5  6  7
1  9  5  13 16
2  18 6  22 25
3  23 8  25 31
4  23 11 27 40

我知道 for 循环中的索引指示有问题,但我无法弄清楚该参数必须如何表述。对于这方面的任何帮助,我将不胜感激。

【问题讨论】:

  • 一般来说,每当我看到有关循环数据帧的问题时,我认为“不要获取数据帧”大多数使用 Pandas 数据帧的所有事情都是通过矩阵运算完成的。不是循环,如下面的答案所示。

标签: python loops pandas


【解决方案1】:

这是一个简单的cumsum

df2 = df1.copy()
df2.loc[0] = [2,5,6,7]
desired_df = df2.cumsum()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 2016-11-26
    • 2021-01-22
    • 1970-01-01
    • 2012-01-07
    • 2017-10-05
    • 2021-05-21
    相关资源
    最近更新 更多