我有一个像波纹管这样的数据框的子集
ID var1 var2 var3
111 A 1 1
222 A 1 1
333 A 1 1
444 A 2 1
555 A 2 1
666 A 2 1
,我想加入下面的数据框缺少的信息。但是只有那些子集包含var1和var2的ID
ID var1 var2 var3
111 A 1 1
222 A 1 1
333 A 1 1
777 A 1 0
888 A 1 0
444 A 2 1
555 A 2 1
666 A 2 1
999 A 2 0
123 B 3 1
456 B 4 0
789 C 5 1
因此输出应为
ID var1 var2 var3
111 A 1 1
222 A 1 1
333 A 1 1
777 A 1 0
888 A 1 0
444 A 2 1
555 A 2 1
666 A 2 1
999 A 2 0
谢谢!
答案 0 :(得分:1)
使用merge
In [164]: df2.merge(df1[['var1', 'var2']].drop_duplicates())
Out[164]:
ID var1 var2 var3
0 111 A 1 1
1 222 A 1 1
2 333 A 1 1
3 777 A 1 0
4 888 A 1 0
5 444 A 2 1
6 555 A 2 1
7 666 A 2 1
8 999 A 2 0
答案 1 :(得分:-1)
尽管零已经回答。您还可以使用Pandas Library
及其DataFrame
模块。它非常易于使用和理解。仅使用索引,您就可以对数据进行排序,迭代,聚合,压缩,可视化和稀疏。
将其与NumPy
的ndarray
结合使用,使其更加易于操作。 TutorialsPoint有一个很好的教程,介绍了如何结合这两种(基本功能)Python Pandas - Basic Functionality。
'''
ID var1 var2 var3
111 A 1 1
222 A 1 1
333 A 1 1
444 A 2 1
555 A 2 1
666 A 2 1
'''
import pandas as pd
data = [
[111, 'A', 1, 1],
[222, 'A', 1, 1],
[333, 'A', 1, 1],
[444, 'A', 2, 1],
[555, 'A', 2, 1],
[666, 'A', 2, 1]
]
df = pd.DataFrame( data, columns = [ 'ID', 'var1', 'var2', 'var3' ] )
print(df)
ID var1 var2 var3
0 111 A 1 1
1 222 A 1 1
2 333 A 1 1
3 444 A 2 1
4 555 A 2 1
5 666 A 2 1