比较两个Pandas数据帧并创建值列表

时间:2017-06-23 16:14:06

标签: list python-3.x dataframe

我有2 <android.support.v4.app.FragmentTabHost xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TabWidget android:id="@android:id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" /> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="0" /> <FrameLayout android:id="@+id/realtabcontent" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" /> </LinearLayout> </android.support.v4.app.FragmentTabHost>

TabWidget tw = (TabWidget) findViewById(android.R.id.tabs);
LinearLayout ll = (LinearLayout) tw.getParent();
HorizontalScrollView hs = new HorizontalScrollView(this);
hs.setLayoutParams(new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.WRAP_CONTENT));
ll.addView(hs, 0);
ll.removeView(tw);

我正在尝试从pandas dataframes创建一个df1 = pd.DataFrame({'Model': [1,2,3,4,5], 'Color': ['Orange', 'Red', 'Black', 'Purple', 'Pink']}) Color Model Orange 1 Red 2 Black 3 Purple 4 Pink 5 df2 = pd.DataFrame({'Color': ['Orange', 'Green', 'Purple', 'Black', 'Indigo'], 'Drink': ['Soda', 'Juice', 'Water', 'Soda', 'Lemonade'], 'Model': [1,1,4,6,8]}) Color Drink Model Orange Soda 1 Green Juice 1 Purple Water 4 Black Soda 6 Indigo Lemonade 8 饮品,其颜色和型号与list中的颜色和型号相匹配。对于上面的示例,输出应为:

df2

我将如何做到这一点?我试过了:

df1

返回:

['Soda', 'Water']

我认为我很接近但不确定如何摆脱重复。

2 个答案:

答案 0 :(得分:0)

如果您确定重复列表包含所有需要的值,则可以将其转换为set() =)

lst=['Soda', 'Soda', 'Soda', 'Soda', 'Soda', 'Soda', 'Water', 'Water', 'Water']
unique_list=list(set(lst))

答案 1 :(得分:0)

我设法用以下方法解决了这个问题:

df3 = df2.loc[(df2['Color'].isin(list(df1.Color))) & df2.Model.isin(list(df1.Model))]

list(df3.Drink)

输出:

['Soda', 'Water']