繁体   English   中英

仅当 B 列的值与 Python 中的 NaT 不同时,如何将 A 列中的行替换为 B 列中的行?

[英]How to replace the rows in column A with the rows in column B only when column B has values different from NaT in Python?

仅当 B 列的值与 Python 中的NaT不同时,我才尝试将 A 列中的行替换为 B 列中的行。

这就是我所做的:

import numpy as np
import pandas as pd

query0 = pd.DataFrame.from_dict({'Proposed Date': {0: '2021-01-07 00:00:00',
  1: '2021-01-21 00:00:00',
  2: '2021-01-25 00:00:00',
  3: '2021-01-25 00:00:00',
  4: '2021-01-25 00:00:00',
  5: '2021-01-25 00:00:00',
  6: '2021-01-26 00:00:00',
  7: '2021-01-26 00:00:00',
  8: '2021-01-28 00:00:00',
  9: '2021-01-29 00:00:00'},
 'Start Time1': {0: '17:00',
  1: nan,
  2: '09:45',
  3: '11:45',
  4: '14:45',
  5: '14:45',
  6: '14:00',
  7: '14:20',
  8: '18:15',
  9: nan},
 'Publication Date': {0: '2021-01-12 00:00:00',
  1: 'NaT',
  2: 'NaT',
  3: 'NaT',
  4: 'NaT',
  5: 'NaT',
  6: '2021-01-31 00:00:00',
  7: '2021-01-27 00:00:00',
  8: 'NaT',
  9: '2021-01-31 00:00:00'}})


x = np.isnat(query0['Publication Date'])

for i in range(len(query0)):
    if x == 'False':
       query0['Proposed Date'][i] = query0['Publication Date'][i] 
    else:
       query0['Proposed Date'][i]

让我给你一个例子,只为第一行提供所需的 output:

# actual dataset for row 0
         Proposed Date    Start Time1     Publication Date
0  2021-01-07 00:00:00       17:00       2021-01-12 00:00:00

# desired output for row 0

      Proposed Date       Start Time1     Publication Date
0  2021-01-12 00:00:00       17:00       2021-01-12 00:00:00

# do this for every row

但是,它不起作用。

谁能帮我这个?

谢谢!

您可以尝试np.where (并将列隐藏到之前的日期时间):

query0["Proposed Date"] = pd.to_datetime(query0["Proposed Date"])
query0["Publication Date"] = pd.to_datetime(query0["Publication Date"])

query0["Proposed Date"] = np.where(
    query0["Publication Date"].notna(),
    query0["Publication Date"],
    query0["Proposed Date"],
)

print(query0)

印刷:

  Proposed Date Start Time1 Publication Date
0    2021-01-12       17:00       2021-01-12
1    2021-01-21         NaN              NaT
2    2021-01-25       09:45              NaT
3    2021-01-25       11:45              NaT
4    2021-01-25       14:45              NaT
5    2021-01-25       14:45              NaT
6    2021-01-31       14:00       2021-01-31
7    2021-01-27       14:20       2021-01-27
8    2021-01-28       18:15              NaT
9    2021-01-31         NaN       2021-01-31

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM