python - Python Dataframe 中的多个 If 语句

标签 python pandas dataframe if-statement

我有一个名为 df1 的数据帧和一个名为 list 的数据帧列表。

其中每个都存在日期列,例如 2019-01-01 和另一个列 ID(不是唯一的),以及其他一些东西。

示例:

df1

ID   date         Name
111  2019-01-01   John
222  2019-01-01   Smith
333  2019-01-01   Sam

list = [df_A, df_B, df_C]

# Example from a list:

df_A 

ID   date        Name
111  2019-01-02  Katrin
222  2019-01-02  Ivan
333  2019-01-02  Leo

df_B

ID   date         Name
111  2019-01-01   John
222  2019-01-01   Smith
333  2019-01-01   Sam

df_C

ID   date        Name
111  2019-01-09  Sam_1
222  2019-01-09  Leo_1
333  2019-01-09  Marcel

我想根据此数据帧列表中的 ID 和日期将值附加到 df1

条件是:

  • 如果 df1 中 ID 111 的最大日期等于列表中某个 df 中 ID 111 的最大日期,则不执行任何操作。
  • 如果 df1 中 ID 222 的最大日期小于列表中某个 df 中 ID 222 的最大日期,则执行一些操作。

输入应该是什么样子:

df1

ID   date         Name
111  2019-01-01   John
222  2019-01-01   Smith
333  2019-01-01   Sam
111  2019-01-02  Katrin
222  2019-01-02  Ivan
333  2019-01-02  Leo
111  2019-01-09  Sam_1
222  2019-01-09  Leo_1
333  2019-01-09  Marcel

df_B 的日期等于 df1,因此我们不更新 df1,但对于其他 2 个 df,我们需要将它们的值附加到 df1

最佳答案

不要使用list作为变量名,因为它是Python内置数据类型。我还将 df_Adf_Bdf_C 连接到一个数据帧中,以便于操作:

# Concatenate df_A, df_B, df_C into a single frame, called df2
df2 = pd.concat([df_A, df_B, df_C], ignore_index=True)

# Line up df1 and df2 by ID so we can compare their dates
compare = df1[['ID', 'date']].merge(df2, on='ID', suffixes=('1', '2'))

# For cases where date1 < date2, append them to df1
new_df = compare.query('date1 < date2').rename(columns={'date2': 'date'})[['ID', 'date', 'Name']]
df1 = df1.append(new_df, ignore_index=True)

关于python - Python Dataframe 中的多个 If 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57591776/

相关文章:

scala - 读取不同文件夹深度的多个csv文件

r - 从多列中仅获取值(非 0、非 NA)

python - 从 python 中的数据框中创建两列的 python 对列表

python - 文件名(来自多个文件)作为一个数据框中的列名

python - 将一个数据框除以另一个数据框,不考虑一列

python - 分区(如果适用)

python - 将 Pandas 列中的整数值转换为字符串

python - 使用 python 脚本升级 linux

Python 正则表达式读取/etc/resolv.conf 并只返回 ip 地址,认为它几乎在那里,

python - 如何自动按计划运行 Google Cloud 的 "AI Notebooks"?