python - Pandas Python - 根据多个条件提取行。包括数据示例
问题描述
我正在尝试根据条件从 dataframe1 提取行到 dataframe2,但我很挣扎,有人可以帮助我吗?会很棒的。
数据框1:
df1 = pd.DataFrame([[1001, 'democrat',0.23],[1001, 'republican',0.7],[1001, 'others',0.07],[1003, 'democrat',0.33],[1003, 'republican',0.44],[1003, 'others',0.23]], columns=['Fips_code', 'Partisan', 'Vote_Pct'])
数据框2:
df2 = pd.DataFrame([[1001],[1003], [1005]], columns=['Fips_code'])
我想根据 fips 代码条件将三列添加到 dataframe2 中,如下所示('democrat_vote_pct'、'republican_vote_pct'、'others_vote_pct')。
想要的:
df2 = pd.DataFrame([[1001,0.23,0.7,0.07],[1003,0.33,0.44,0.23], [1005, NA, NA, NA]], columns=['Fips_code','democrat_vote_pct','republican_vote_pct','others_vote_pct'])
请帮我..
解决方案
你可以尝试这样的事情:
_df2 = df1.pivot_table(values='Vote_Pct', index='Fips_code', columns='Partisan')
接着:
result = df2.merge(_df2, on='Fips_code', how='left')
这给了你你想要的:
Fips_code democrat others republican
0 1001 0.23 0.07 0.70
1 1003 0.33 0.23 0.44
2 1005 NaN NaN NaN
如果您希望列具有不同的名称,只需给它一个.rename()
new_cols = {'democrat': 'democrat_pct_votes',
'others': 'others_pct_votes',
'republican': 'republican_pct_votes'}
df2.rename(new_cols, axis=1, inplace=True)
推荐阅读
- python - 查找具有共同起始元素的子列表 - python
- angular - 跨设备渲染 Angular 的实时变化
- hyperledger-fabric - 无法在 Composer Rest Server 中过滤数据
- authentication - ODBC 中的 InitString SqlAnywhere 12 身份验证
- python - 类型提示会提高 Python 的性能吗?
- animation - 使用 react-native Animated 为 Svg.G 制作动画
- python - 使用漂亮的汤和 css 访问标签
- sql - SQL:如何在 ssms 中对值进行分类
- php - 在 WordPress 插件中使用 DOM 内的 JSON 时获取未定义的属性:stdClass::$key 错误
- ios - iOS在中国的网络访问权限