python - 使用具有不同值的新列复制 DataFrame
问题描述
我有一个熊猫数据框。
import pandas as pd
import numpy as np
from datetime import datetime
d = {'account_id': [1, 2], 'type': ['a', 'b']}
df = pd.DataFrame(data=d)
帐户ID | 类型 | |
---|---|---|
0 | 1 | 一种 |
1 | 2 | b |
我想添加两列include_images
,data_since
其中应该包含原始DataFrame的每一行的一个时间True
和一个日期,以及原始DataFrame的每一行的一个时间False
和一个日期NaN
。
有没有更有效的方法来写这个然后像这样:
df_a = df.copy()
df_a['include_images'] = True
df_a['data_since'] = datetime(2018, 1, 1)
df_b = df.copy()
df_b['include_images'] = False
df_b['data_since'] = np.nan
df = pd.concat([df_a, df_b], ignore_index=True)
帐户ID | 类型 | 包含图像 | data_since | |
---|---|---|---|---|
0 | 1 | 一种 | 真的 | 2018-01-01 00:00:00 |
1 | 2 | b | 真的 | 2018-01-01 00:00:00 |
2 | 1 | 一种 | 错误的 | 钠盐 |
3 | 2 | b | 错误的 | 钠盐 |
解决方案
尝试assign
即时创建副本:
const_date = pd.Timestamp('2018-01-01')
out = pd.concat([df.assign(include_img=True, data_since=const_date),
df.assign(include_img=False, data_since=pd.NaT)],
ignore_index=True)
输出:
account_id type include_img data_since
0 1 a True 2018-01-01
1 2 b True 2018-01-01
2 1 a False NaT
3 2 b False NaT
推荐阅读
- python - Python。Tor 浏览器。虚拟专用网。代理人
- python - 如何在 celery worker 中一次只执行一项任务,而不会丢失它并保持队列中任务的顺序
- sql - SQL 字符串转 int(日期)
- python - 为什么我的代码在添加此列表值后停止
- html - 如何使用输入文本框内联按钮/下拉菜单?
- node.js - Express:如何将请求响应发送到同一页面
- c++ - 关闭后Boost Beast重新连接websocket连接
- r - 从现有数据集创建时间序列
- javascript - 一旦用户在 magento 中单击关闭,就隐藏整个会话顶部的横幅
- python - 在列表理解期间无法解包返回的元组