根据其他数据框向 pandas 数据框添加新列
Add new columns to pandas dataframe based on other dataframe
我正在尝试在 pandas 数据框中设置一个新列(实际上是两列),数据来自其他数据框。
我有以下两个数据框(它们是用于此目的的示例,原始数据框要大得多):
In [116]: df0
Out[116]:
A B C
0 0 1 0
1 2 3 2
2 4 5 4
3 5 5 5
In [118]: df1
Out[118]:
A D E
0 2 7 2
1 6 5 5
2 4 3 2
3 0 1 0
4 5 4 6
5 0 1 0
我想要一个新的数据框(或添加到 df0,随便什么),如:
df2:
A B C D E
0 0 1 0 1 0
1 2 3 2 7 2
2 4 5 4 3 2
3 5 5 5 4 6
如您所见,在生成的数据框中不存在 A=6 的行,该行存在于 df1 中但不存在于 df0 中。此外,A=0 的行在 df1 中重复,但在结果 df2 中不重复。
实际上,我在选择方法上遇到了问题。我可以这样做:
df1.loc[df1['A'].isin(df0['A'])]
但我不确定如何应用保留唯一数据的部分(请记住 df1 可以包含重复数据)并将这两列添加到 df2 数据集(或将它们添加到 df0)。
我在这里搜索过,但我不知道如何应用类似 groupby 或 map 之类的东西。
有什么想法吗?
谢谢!
这是merge
(docs)的基本应用:
import pandas as pd
df2 = pd.merge(df0,df1, left_index=True, right_index=True)
试试这个
new_data=df0.set_index('A').join(df1.set_index('A'))
你可能会得到索引错误然后你必须等于没有。两个数据框中的索引
我正在尝试在 pandas 数据框中设置一个新列(实际上是两列),数据来自其他数据框。
我有以下两个数据框(它们是用于此目的的示例,原始数据框要大得多):
In [116]: df0
Out[116]:
A B C
0 0 1 0
1 2 3 2
2 4 5 4
3 5 5 5
In [118]: df1
Out[118]:
A D E
0 2 7 2
1 6 5 5
2 4 3 2
3 0 1 0
4 5 4 6
5 0 1 0
我想要一个新的数据框(或添加到 df0,随便什么),如:
df2:
A B C D E
0 0 1 0 1 0
1 2 3 2 7 2
2 4 5 4 3 2
3 5 5 5 4 6
如您所见,在生成的数据框中不存在 A=6 的行,该行存在于 df1 中但不存在于 df0 中。此外,A=0 的行在 df1 中重复,但在结果 df2 中不重复。
实际上,我在选择方法上遇到了问题。我可以这样做:
df1.loc[df1['A'].isin(df0['A'])]
但我不确定如何应用保留唯一数据的部分(请记住 df1 可以包含重复数据)并将这两列添加到 df2 数据集(或将它们添加到 df0)。 我在这里搜索过,但我不知道如何应用类似 groupby 或 map 之类的东西。
有什么想法吗?
谢谢!
这是merge
(docs)的基本应用:
import pandas as pd
df2 = pd.merge(df0,df1, left_index=True, right_index=True)
试试这个 new_data=df0.set_index('A').join(df1.set_index('A')) 你可能会得到索引错误然后你必须等于没有。两个数据框中的索引