首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在pandas中使用相同的一列将数据从一个数据帧移动到另一个数据帧

在pandas中使用相同的一列将数据从一个数据帧移动到另一个数据帧
EN

Stack Overflow用户
提问于 2018-08-28 09:43:19
回答 2查看 61关注 0票数 0

所以我仍然在经历熊猫,在做这件事上有点小麻烦

数据集1

代码语言:javascript
复制
Sample Age   Tumor     Location
   3   31    Benign      Lung
   8   45   Malignant    Heart
   9   44   Malignant    Heart

数据集2

代码语言:javascript
复制
Sample Age   Tumor     Location
   3   None  None        None 
   8   None  None        None 
   9   None  None        None 

我想要做的是根据示例列将数据从数据集1移动到数据集2,以便正确映射它

就像这样

数据集2

代码语言:javascript
复制
Sample Age   Tumor     Location
   3   31    Benign      Lung
   8   45   Malignant    Heart
   9   44   Malignant    Heart

我似乎还找不到这样的例子。而不是将两者合并成一个新的数据帧?

EN

回答 2

Stack Overflow用户

发布于 2018-08-28 10:01:06

使用update并假设'Sample'是map的唯一键

代码语言:javascript
复制
df2=df2.set_index('Sample')
df2.update(df1.set_index('Sample'))
df2.reset_index(inplace=True)
df2
Out[1046]: 
   Sample Age      Tumor Location
0       3  31     Benign     Lung
1       8  45  Malignant    Heart
2       9  44  Malignant    Heart
票数 0
EN

Stack Overflow用户

发布于 2018-08-28 10:11:15

您可以使用loc (docs)根据放置在行上的条件来设置列。下面是一个示例:

代码语言:javascript
复制
#Setup
import pandas as pd

dataset_1 = {
        'Sample': [3, 8, 9], 
        'Age': [31, 45, 44], 
        'Tumor': ['Benign', 'Malignant', 'Malignant'],
        'Location': ['Lung', 'Heart', 'Heart']
        }
dataset_2 = {
        'Sample': [3, 8, 9], 
        'Age': [None, None, None], 
        'Tumor': [None, None, None],
        'Location': [None, None, None]
        }

df_1 = pd.DataFrame(dataset_1)
df_2 = pd.DataFrame(dataset_2)
print(df_1)
print(df_2)

以下哪项输出:

代码语言:javascript
复制
   Age Location  Sample      Tumor
0   31     Lung       3     Benign
1   45    Heart       8  Malignant
2   44    Heart       9  Malignant
    Age Location  Sample Tumor
0  None     None       3  None
1  None     None       8  None
2  None     None       9  None

这就是如何使用loc将列设置为相等,其中某列的行与另一列的行相等。在本例中,被比较的列是两个数据帧的Sample列:

代码语言:javascript
复制
df_2.loc[df_2.Sample == df_1.Sample, :] = df_1

print(df_1)
print(df_2)

这就给我们提供了:

代码语言:javascript
复制
   Age Location  Sample      Tumor
0   31     Lung       3     Benign
1   45    Heart       8  Malignant
2   44    Heart       9  Malignant
   Age Location  Sample      Tumor
0   31     Lung       3     Benign
1   45    Heart       8  Malignant
2   44    Heart       9  Malignant

我希望这就是你要找的。祝好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52048968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档