繁体   English   中英

如何根据条件将 Pandas 中的列从一个数据集复制到另一个数据集

[英]How to copy a column in Pandas from one dataset to another based on condition

我有两个这种形式的数据集:

第一个数据集:

Booking_id   Booking amount   
6678           576545
6429           654556
6452           755849
6056           358749
6084           NaN
6542           768087

第二个数据集:

ID_Universal   Price
4857           576545
6084           465488
4886           755849
3868           358749
8669           765889
4684           768087

在第一个数据集中,Booking_amount 的 NaN 值很少......但它们存在于数据集 2 中。例如,如果您将看到 id=6084 在数据集 1 中具有 Nan 值,但对于相同的 id,金额值存在于数据集中2. 同样,数据集 2 中存在数据集 1 中 Booking_amount 的多个 Nan 值。因此,我想将数据集 2 中的值复制到数据集 1,其中数据集 1 具有 Nan 值,但对于相同的 id,它的值存在在数据集 2 中。

如果ID_Universal在您的第二个 dataframe 中是唯一的, fillna可以帮助您。

first_df.set_index('Booking_id')['Booking_amount'].fillna(second_df.set_index('ID_Universal')['Price'])

首先,您必须为唯一定义的 dataframe 设置索引

假设第一个数据集具有Booking_id ,第二个数据集具有唯一且相同的ID_Universal


首先将这些列设置为索引

df1.set_index('Booking_id', inplace=True)
df2.set_index('ID_Universal', inplace=True)

第二个 Make 变量基于 dataframe 列名称,基于您必须填写和必须填写的列名称。
before_change = 'amount'
after_change = 'Price'

使列名相同并应用fillna来填充该nan值,然后在最后一步将这些列名替换回原始值。
df1.rename(columns={before_change:after_change}, inplace=True)

df1.fillna(df2, inplace=True)

df1.rename(columns={after_change:before_change}, inplace=True)

暂无
暂无

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

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