我有一个以列名['0','1','2','3']创建的熊猫数据框。该数据框的元素是数值。我们称之为“ df_1”
现在,我需要创建另一个数据框(例如df_2),其索引和列名称与df_1相同。
元素df_2如下:
即
df_2 [i,j] = df_1 [i,j] + df_1 [i,j-1],只要当前列名不是'0'
df_2 [i,j] = 0,只要当前列名称为'0'
我已经为该操作编写了python代码,并且工作正常。但是,采用的方法效率不高,而且非常复杂。
请让我知道是否有更好的方法来执行相同的操作
import pandas
df_1=pandas.DataFrame([[0,10,20,30],[0,40,50,60],[0,70,80,90]],columns=['0','1','2','3'])
df_2=pandas.DataFrame(0,index=df_1.index,columns=df_1.columns)
for j in list(df_1.columns):
idx=list(df_1.columns).index(j)
for i in range(len(df_1.index)):
if j!='0':
df_2.iloc[i,idx]=df_1.iloc[i,idx-1]+df_1.iloc[i,idx]
答案 0 :(得分:0)
首先将列向右移动一个,然后添加到原始列,使其等于df_2。
df_2 = df_1 + df_1.shift(1, axis=1)
过滤列'0'的列,然后使其等于ot 0。
df_2['0'] = 0
在此操作过程中,熊猫将转换为float,如果需要,可转换回int。
df_2.astype('int32')