gpt4 book ai didi

python - 如何将 pandas DataFrame 与内置逻辑连接起来?

转载 作者:太空宇宙 更新时间:2023-11-03 12:30:43 26 4
gpt4 key购买 nike

我有两个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com