【问题标题】:Pandas, substract columns Dataframe in loop熊猫,在循环中减去列数据框
【发布时间】:2016-12-01 14:47:31
【问题描述】:

我是熊猫新手。我有一个包含 6 列的数据框,我想创建一个执行此操作的 for 循环:

-创建一个新列(nc 1) -nc1 = 第 1 列 - 第 2 列

我想对所有列进行迭代,所以最后一个是: ncx = 第 5 列 - 第 6 列

我可以像这样减去列:

df['nc'] = df.Column1 - df.Column2

但这在我尝试循环时没有用,因为我总是必须插入列的名称。

谁能帮助我告诉我如何将列称为数字? 谢谢!

【问题讨论】:

  • 对不起,你要df.diff(axis=1)
  • 嗨,这真的很有帮助。

标签: python loops pandas dataframe


【解决方案1】:
In [26]: import numpy as np
    ...: import random
    ...: import pandas as pd
    ...: 
    ...: A = pd.DataFrame(np.random.randint(100, size=(5, 6)))

In [27]: A
Out[27]: 
    0   1   2   3   4   5
0  82  13  17  58  68  67
1  81  45  15  11  20  63
2   0  84  34  60  90  34
3  59  28  46  96  86  53
4  45  74  14  10   5  12

In [28]: for i in range(0, 5):
    ...:     A[(i + 6)] = A[i] - A[(i + 1)]
    ...: 
    ...: 
    ...: A
    ...: 
Out[28]: 
   0   1   2   3   4   5   6   7   8   9   10
0  82  13  17  58  68  67  69  -4 -41 -10   1
1  81  45  15  11  20  63  36  30   4  -9 -43
2   0  84  34  60  90  34 -84  50 -26 -30  56
3  59  28  46  96  86  53  31 -18 -50  10  33
4  45  74  14  10   5  12 -29  60   4   5  -7

In [29]: nc = 1 #The first new column
    ...: A[(nc + 5)] #outputs the first new column
Out[29]: 
0    69
1    36
2   -84
3    31
4   -29

这里不用按名字来调用,直接按列号就行了,写个简单的函数调用列+5即可

类似这样的:

In [31]: def call_new_column(n):
    ...:     return(A[(n + 5)])
    ...: 
    ...: 
    ...: call_new_column(2)
Out[31]: 
0    -4
1    30
2    50
3   -18
4    60

【讨论】:

  • 嗨,谢谢你的帮助,但我想知道当你的列没有数字作为名称时,是否有办法做到这一点,例如,如果你必须操纵某人的数据否则,他没有用数字命名列。
猜你喜欢
  • 2013-12-10
  • 1970-01-01
  • 2018-10-13
  • 1970-01-01
  • 2017-03-31
  • 2020-12-30
  • 2013-12-04
  • 2020-07-06
相关资源
最近更新 更多