在下面的循环中,我想将任何None
值更改为前一行的值。我当前的代码是这样做的,但是如果一行中有2个None
,它只会更改第一个。你知道吗
我目前使用.shift()
将前一行的值作为一个新列,称为identifierOld
,当只需要更改1 None
值时,它就可以工作,但是一行中的值经常超过1,这意味着我的代码无法工作。你知道吗
for i in indexTest6.index:
if indexTest6.at[i, 'identifier'] == "None":
indexTest6.at[i, 'identifier'] = indexTest6.at[i, 'identifierOld']
电流输出:
+---------------------+------------+-----------+---------------+
| requestTime | identifier | assetType | identifierOld |
+---------------------+------------+-----------+---------------+
| 01/04/2019 01:18:21 | 4444 | issn | None |
| 01/04/2019 01:18:21 | 4444 | | 4444 |
| 01/04/2019 01:18:22 | None | None | None |
| 01/04/2019 01:18:22 | None | None | None |
+---------------------+------------+-----------+---------------+
期望输出:
+---------------------+------------+------------------+---------------+
| requestTime | identifier | assetType | identifierOld |
+---------------------+------------+------------------+---------------+
| 01/04/2019 01:18:21 | 4444 | issn | None |
| 01/04/2019 01:18:21 | 4444 | | 4444 |
| 01/04/2019 01:18:22 | 4444 | None | 4444 |
| 01/04/2019 01:18:22 | 4444 | None | 4444 |
+---------------------+------------+------------------+---------------+
(理想情况下,我希望能够做到这一点,而不需要额外的专栏。)
编辑: 感谢anky和DataNearrow,使用以下代码很有效:
indexTest6["identifier"] = indexTest6["identifier"].fillna(method='ffill')
+-------------+------------+-----------+
| requestTime | identifier | assetType |
+-------------+------------+-----------+
| 18:21.2 | 44444443 | issn |
| 18:21.2 | 44444443 | |
| 18:21.9 | 44444443 | None |
| 18:22.1 | 44444443 | None |
+-------------+------------+-----------+
目前没有回答
相关问题 更多 >
编程相关推荐