python - 根据条件合并数据帧

标签 python pandas

我有 2 个 DataFrame

df1 由列组成:person_id,day,flag

df2 由列组成:person_id,day_start,day_end

我想添加到 df2 列 num_flags这将显示 flag 的总和person_id内的栏目和day_start < day < day_end间隔。

在没有复杂循环的情况下,哪种方法最快?我正在寻找快速解决方案,例如 merge

最佳答案

>>> df = pd.merge(df1,df2, on="person_id", how="outer")
>>> df["lies_between"] = df.day.between(df.day_start, df.day_end,inclusive=False)
>>> x = pd.pivot_table(df,values="flags",columns="lies_between", index="person_id",aggfunc=np.sum)
>>> x.reset_index(drop=False,inplace=True)
>>> x[["person_id", True]]

这可能会有所帮助:

>>> help(pandas.Series.between_time)

关于python - 根据条件合并数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41717553/

相关文章:

python - 由于 python.config 中的 YAML 错误,部署到 AWS EB 失败

python - 如何从pandas dataframe更新ms access中的多行

python - 如何根据匹配用另一行的数据填充 np.nan 值

python - dataframe.series 和 dataframe ['series' 之间有什么区别]?

Python:导出 Pandas 数据框时如何在 Excel 中创建多行单元格

python - 如何将上限应用于 Pandas DateTime

python - 与 PostgreSQL 数据库的 SQLAlchemy/psycopg2 连接是否加密

python - 单击程序时遇到问题 - pyautogui

用于特定输入挂起的 Python 正则表达式

python - 如何标准化 pandas DataFrame 中行之间的字符串?