python - 对列中具有共同值的行使用网格网格
问题描述
我的数据框:
df1 = pd.DataFrame(np.array([[1, 2, 3], [4, 2, 3], [7, 8, 8]]),columns=['a', 'b', 'c'])
df2 = pd.DataFrame(np.array([[1, 2, 3], [4, 2, 3], [5, 8, 8]]),columns=['a', 'b', 'c'])
df1,df2:
a b c
0 1 2 3
1 4 2 3
2 7 8 8
a b c
0 1 2 3
1 4 2 3
2 5 8 8
我想a
在所有序列中组合来自两个 df 的列中的行,但仅在列中的值b
相等c
的情况下。现在,我一般只有以下代码的解决方案:
x = np.array(np.meshgrid(df1.a.values,
df2.a.values)).T.reshape(-1,2)
df = pd.DataFrame(x)
print(df)
0 1
0 1 1
1 1 4
2 1 5
3 4 1
4 4 4
5 4 5
6 7 1
7 7 4
8 7 5
df1.a and df2.a
仅适用于以下行的预期输出df1.b==df2.b and df1.c==df2.c
:
0 1
0 1 1
1 1 4
2 4 1
3 4 4
4 7 5
所以基本上我需要按选定列中的常见行分组b
,c
解决方案
您应该使用内部合并尝试DataFrame.merge :
df1.merge(df2, on=['b', 'c'])[['a_x', 'a_y']]
a_x a_y
0 1 1
1 1 4
2 4 1
3 4 4
4 7 5
推荐阅读
- azure-active-directory - 如何将安全组添加到 Azure 应用服务?
- svelte - 解析获取的主题标签并创建“svelte-routing”链接
- c# - C# 忽略空检查?
- html - Flask WTForms HiddenInput 值未发送到应用程序
- python-3.x - 如何允许组使用 is_staff 属性访问管理页面?
- regex - 花式正则表达式不返回输入中的所有匹配项
- c# - Xamarin.Form 上的 Firebase 电话身份验证
- python - 为参数添加动态值
- javascript - 在 React 中将单击事件从一个类组件传递到另一个类组件
- python - 列表理解更改列表元素