【发布时间】:2019-08-28 08:54:39
【问题描述】:
我有一个使用列名 ['0','1','2','3'] 创建的 pandas 数据框。该数据框的元素是数值。我们称它为“df_1”
现在我需要创建另一个数据框(比如 df_2),其索引和列名与 df_1 相同。
元素 df_2 是这样的:
- 只要列名是'0',它下面的所有行都将被标记为0。
- 对于 df_2 中的任何其他列,其行元素将是 df_1 中相应行元素与当前列之前列下的行元素之和
即
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]
【问题讨论】: