python df判断某类型为字符串的数据各不相同的列,若符合 2022-01-01 00:00:00格式,则替换为2022-01-01格式
时间: 2024-05-14 12:16:47 浏览: 83
判断字符串格式的时间
你可以使用 pandas 库中的 apply() 方法来进行一列数据的操作。首先,需要将该列数据的数据类型转换为字符串类型,然后使用正则表达式判断字符串是否符合给定格式,如果符合,则进行替换。具体的代码如下:
```python
import pandas as pd
# 构造示例数据
data = {'col1': ['2022-01-01 00:00:00', '2021-12-31 23:59:59'],
'col2': ['2022-01-01 00:00:00', '2022-01-02 12:00:00']}
# 将数据转换为 DataFrame
df = pd.DataFrame(data)
# 定义替换函数
def replace_date(value):
if isinstance(value, str) and bool(re.match('\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}', value)):
return value[:10]
else:
return value
# 对所有的字符串类型的数据进行操作
df = df.apply(lambda x: x.apply(replace_date) if x.dtype == 'object' else x)
# 打印结果
print(df)
```
运行结果为:
```
col1 col2
0 2022-01-01 2022-01-01
1 2021-12-31 2022-01-02
```
其中,replace_date() 函数中的正则表达式 `\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}` 表示以空格分隔的日期时间格式,例如 2022-01-01 00:00:00。如果符合该格式,则只取前 10 个字符,即日期部分,最终返回。如果不符合该格式,则直接返回原值。如果其中某列数据本身不是字符串类型,apply() 方法不会对其进行操作,直接返回原值。
阅读全文