Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.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 从一列到下一列的百分比变化_Python_Pandas - Fatal编程技术网

Python 从一列到下一列的百分比变化

Python 从一列到下一列的百分比变化,python,pandas,Python,Pandas,假设我有一个数据帧: df = pd.DataFrame([[3, 2, 1], [5, 4, 2]]) 3 2 1 5 4 2 我想返回一个数据帧,其中一列到下一列的百分比变化。因此,上述数据集将返回: .666 .5 .8 .5 我怎样才能在熊猫身上做到这一点呢?这不是一个非常理想的方法,但很有效 df['diff_1_0']=abs(df[0]-df[1])/df[0] df['diff_2_1']=abs(df[1]-df[2])/df[1] df=df[['diff_1_0'

假设我有一个数据帧:

df = pd.DataFrame([[3, 2, 1], [5, 4, 2]])

3 2 1
5 4 2
我想返回一个数据帧,其中一列到下一列的百分比变化。因此,上述数据集将返回:

.666 .5
.8   .5

我怎样才能在熊猫身上做到这一点呢?

这不是一个非常理想的方法,但很有效

df['diff_1_0']=abs(df[0]-df[1])/df[0]
df['diff_2_1']=abs(df[1]-df[2])/df[1]
df=df[['diff_1_0','diff_2_1']]
如果你有很多列,你可以把它做成下面这样的循环

column_count=df.shape[1]+1
column_names=df.columns
for columns in df:
    if columns==0:
        continue
    else:
        df.insert(columns, str('diff_'+str(column_count)), abs(df[columns-1]-df[columns])/df[columns-1])
        column_count=column_count+1
df=df.drop(column_names, axis=1)

希望有帮助

熊猫有这样一个功能。使用:


这将输出从一列到另一列的“百分比变化”(根据您的问题)。不是一列到另一列的划分(似乎是你的例子)。

第一个百分比变化是.333对(3-2)/3?谢谢,这正是我需要的。我的例子糟透了。我不会数学:)
df.pct_change(axis='columns')