Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用panda中的interrows()在两列中执行不完整的数学运算_Python_Pandas_For Loop_Subtraction - Fatal编程技术网

Python 使用panda中的interrows()在两列中执行不完整的数学运算

Python 使用panda中的interrows()在两列中执行不完整的数学运算,python,pandas,for-loop,subtraction,Python,Pandas,For Loop,Subtraction,嗨,我正在尝试减去数据帧的2列数据,并将其放入新的数据帧中。我正在interrows()中使用for循环。但是,由于行的大小小于列,循环并没有完成所有计算。该列将在将来增加,因此我使用循环而不是列名。 是否有其他方法执行此计算 name col1 col2 col3 col4 col5 col6 col7 col8 John 0 23 0 1 4 1 5 23 1

嗨,我正在尝试减去数据帧的2列数据,并将其放入新的数据帧中。我正在interrows()中使用for循环。但是,由于行的大小小于列,循环并没有完成所有计算。该列将在将来增加,因此我使用循环而不是列名。 是否有其他方法执行此计算

    name  col1 col2     col3    col4    col5    col6    col7    col8
    John    0   23      0        1      4       1       5      23
1   victor  1   4       5        2      1       4       2      15
2   Alida   1   1       2        6      0       2       14      2
3   Natalie 0   1       1        4      2       3       4       4
4   Morman  3   3       1        0      5       2       0       1
我尝试运行以下代码:

for label, row in df.iterrows():
    df2.iloc[:,[label+2]]=df.iloc[:,[label+2]].values-df.iloc[:,[label+1]].values
但是,循环不会在col6之后运行。我猜这是因为行的数量少于列。 结果:


是否仍要运行循环,直到循环遍历所有列?

您可以对数据帧使用
diff
方法从相邻列中减去每列。例如:

df.set_index('name').diff(axis=1)

这将您的名称列设置为行索引,然后从下一列中减去每一列。正如您所提到的,输出中将少一列,因此结果col1将是NaNs。

您可以对数据帧使用
diff
方法从相邻列中减去每列。例如:

df.set_index('name').diff(axis=1)

这将您的名称列设置为行索引,然后从下一列中减去每一列。正如您所提到的,输出中将少一列,因此结果col1将是NaNs。

如果要减去两个特定的列,请使用以下方法:

import numpy as np 
import pandas as pd
data = {"name":["john","victor","alida","natalie","morman"],"col1":[0,1,2,3,4],"col2":[5,6,7,8,9],"col3":[0,1,2,3,4],"col4":[5,6,7,8,9],"col5":[0,1,2,3,4],"col6":[5,6,7,8,9],"col7":[0,1,2,3,4]}
df = pd.DataFrame(data=data)
print(df)
new_df = pd.DataFrame()
new_df["new_col"] = df["col1"] - df["col2"]
print(new_df)
cols = df.columns
for i in range(2,len(cols)-1):
    new_df["new_" + cols[i]] = df[cols[i]]-df[cols[i-1]]
print(new_df)
例如,如果要从相邻列中减去每一列,请使用以下命令:

import numpy as np 
import pandas as pd
data = {"name":["john","victor","alida","natalie","morman"],"col1":[0,1,2,3,4],"col2":[5,6,7,8,9],"col3":[0,1,2,3,4],"col4":[5,6,7,8,9],"col5":[0,1,2,3,4],"col6":[5,6,7,8,9],"col7":[0,1,2,3,4]}
df = pd.DataFrame(data=data)
print(df)
new_df = pd.DataFrame()
new_df["new_col"] = df["col1"] - df["col2"]
print(new_df)
cols = df.columns
for i in range(2,len(cols)-1):
    new_df["new_" + cols[i]] = df[cols[i]]-df[cols[i-1]]
print(new_df)

如果要减去两个specefic列,请使用col1和col2:

import numpy as np 
import pandas as pd
data = {"name":["john","victor","alida","natalie","morman"],"col1":[0,1,2,3,4],"col2":[5,6,7,8,9],"col3":[0,1,2,3,4],"col4":[5,6,7,8,9],"col5":[0,1,2,3,4],"col6":[5,6,7,8,9],"col7":[0,1,2,3,4]}
df = pd.DataFrame(data=data)
print(df)
new_df = pd.DataFrame()
new_df["new_col"] = df["col1"] - df["col2"]
print(new_df)
cols = df.columns
for i in range(2,len(cols)-1):
    new_df["new_" + cols[i]] = df[cols[i]]-df[cols[i-1]]
print(new_df)
例如,如果要从相邻列中减去每一列,请使用以下命令:

import numpy as np 
import pandas as pd
data = {"name":["john","victor","alida","natalie","morman"],"col1":[0,1,2,3,4],"col2":[5,6,7,8,9],"col3":[0,1,2,3,4],"col4":[5,6,7,8,9],"col5":[0,1,2,3,4],"col6":[5,6,7,8,9],"col7":[0,1,2,3,4]}
df = pd.DataFrame(data=data)
print(df)
new_df = pd.DataFrame()
new_df["new_col"] = df["col1"] - df["col2"]
print(new_df)
cols = df.columns
for i in range(2,len(cols)-1):
    new_df["new_" + cols[i]] = df[cols[i]]-df[cols[i-1]]
print(new_df)

你能解释一下你希望看到的输出是什么吗?此外,当您使用
iterrows
进行迭代时,label将是行索引,但您将其用作iloc的列索引。而且,
iterrows
的速度非常慢,因此如果您对尝试执行的操作进行更多解释,我们可能会找到更好的函数供您使用。虽然我不确定您想要得到什么,但听起来您可能希望使用
diff
方法,并且可能需要事先转置数据帧。我想查看for col7=col7和col6的差异。是否有任何其他函数将在dataframe的所有值中运行计算。我尝试在col中使用标签,但它不起作用@Teepees现在有意义了;下面是我的答案。你能解释一下你希望看到的输出吗?此外,当您使用
iterrows
进行迭代时,label将是行索引,但您将其用作iloc的列索引。而且,
iterrows
的速度非常慢,因此如果您对尝试执行的操作进行更多解释,我们可能会找到更好的函数供您使用。虽然我不确定您想要得到什么,但听起来您可能希望使用
diff
方法,并且可能需要事先转置数据帧。我想查看for col7=col7和col6的差异。是否有任何其他函数将在dataframe的所有值中运行计算。我尝试在col中使用标签,但它不起作用@Teepees现在有意义了;下面是我的答案。数据框列将在未来增加。我想它在我发帖的时候被删除了,所以我想用索引值代替列名;有一个名为
diff
的内置方法可以做到这一点。数据帧列将在将来增加。我想它在我发帖的时候被删除了,所以我想用索引值代替列名;有一个名为
diff
的内置方法可以做到这一点。嗨,这是可以解决的。但是,如果我必须从两个不同的数据帧列中减去值,其中row不确定您所说的where row