我有以下数据帧df
:
| | Country | Pop1 | Pop2 | … | Popn |
|:-----------|------------:|:---------:|:---------:|:--:|:--------:|
| 0 | Canada | 0 | 2 | … | 50 |
| 1 | China | 0 | 5 | … | 75 |
| 2 | Croatia | 0 | 1 | … | 30 |
对于Pop1到Popn列,我想从当前列中减去前面的列值。所以我这样做了:
df_copy = df.copy()
df_copy[df_copy.columns[2:]] = df_copy[df_copy.columns[2:]].apply(lambda x: x - x.shift(1), axis=1)
但是,我遇到了以下问题:我的第一列是Nan,因为之前没有值
| | Country | Pop1 | Pop2 | … | Popn |
|:-----------|------------:|:---------:|:---------:|:--:|:--------:|
| 0 | Canada | Nan | 2 | … | 6 |
| 1 | China | Nan | 5 | … | 10 |
| 2 | Croatia | Nan | 1 | … | 2 |
为了解决这个问题,我决定创建一个新的dataframe,它是将原始dataframe的第一列和第二列以及减法结果中的其他列连接在一起的结果
df_new = pd.concat([df[df.columns[:2]], df_copy[df_copy.columns[2:]]], axis=1)
我想这不是最好的方法,是吗?是否有一种方法可以直接在apply函数中获得所需的结果(指定边界条件等)
我认为您可以通过^{} 转换非差异列,然后使用^{} ,通过^{} 重新封装} 将索引转换为列:
NaN
的列,最后通过^{相关问题 更多 >
编程相关推荐