- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有两个 pandas 数据框,我想生成 expected
数据框中显示的输出。
import pandas as pd
df1 = pd.DataFrame({'a':['aaa', 'bbb', 'ccc', 'ddd'],
'b':['eee', 'fff', 'ggg', 'hhh']})
df2 = pd.DataFrame({'a':['aaa', 'bbb', 'ccc', 'ddd'],
'b':['eee', 'fff', 'ggg', 'hhh'],
'update': ['', 'X', '', 'Y']})
expected = pd.DataFrame({'a': ['aaa', 'bbb', 'ccc', 'ddd'],
'b': ['eee', 'X', 'ggg', 'Y']})
我尝试应用一些连接逻辑,但这没有产生预期的输出。
df1.set_index('b')
df2.set_index('update')
out = pd.concat([df1[~df1.index.isin(df2.index)], df2])
print(out)
a b update
0 aaa eee
1 bbb fff X
2 ccc ggg
3 ddd hhh Y
从这个输出我可以产生预期的输出,但我想知道这个逻辑是否可以直接在 concat
调用中构建?
def fx(row):
if row['update'] is not '':
row['b'] = row['update']
return row
result = out.apply(lambda x : fx(x),axis=1)
result.drop('update', axis=1, inplace=True)
print(result)
a b
0 aaa eee
1 bbb X
2 ccc ggg
3 ddd Y
最佳答案
使用内置 update
将 '' 替换为 nan
即
df1['b'].update(df2['update'].replace('',np.nan))
a b
0 aaa eee
1 bbb X
2 ccc ggg
3 ddd Y
你也可以使用 np.where
即
out = df1.assign(b=np.where(df2['update'].eq(''), df2['b'], df2['update']))
关于python - 如何将 pandas DataFrame 与内置逻辑连接起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47953752/
我正在尝试执行 vagrant up 但一直遇到此错误: ==> default: IOError: [Errno 13] Permission denied: '/usr/local/lib/pyt
我在容器 div 中有一系列动态创建的不同高度的 div。 Varying text... Varying text... Varying text... Varying text.
通过 cygwin 运行 vagrant up 时遇到以下错误。 stderr: /bin/bash: /home/vagrant/.ansible/tmp/ansible-tmp-14872260
今天要向小伙伴们介绍的是一个能够快速地把数据制作成可视化、交互页面的 Python 框架:Streamlit,分分钟让你的数据动起来! 犹记得我在做机器学习和数据分析方面的毕设时,
我是 vagrant 的新手,正在尝试将第二个磁盘添加到我正在用 vagrant 制作的虚拟机中。 我想出了如何在第一次启动虚拟机时连接磁盘,但是当我关闭机器时 然后再次备份(使用 'vagrant
我是一名优秀的程序员,十分优秀!