【发布时间】:2021-09-16 20:30:31
【问题描述】:
我有一个包含两列的数据框; A_ID 和 R_ID。
我想更新 R_ID 以仅包含也在 A_ID 中的值,其余的应该被删除(也是 NaN)。这些值应保持在相同的位置/索引。我知道这是一个内部连接,但我提出的解决方案遇到了几个问题。
例子:
import pandas as pd
data = {'A_ID': ['1E2', '1E3', '1E4', '1E5'], 'R_ID': ['1E7',[np.nan],[np.nan],"1E4",]}
df = pd.DataFrame(data)
print(df)
我试过了
df_A_ID = df[["A_ID"]]
df_R_ID = df[["R_ID"]]
new_df = pd.merge(df_A_ID, df_R_ID, how='inner', left_on='A_ID', right_on ='R_ID', right_index=True)
和
new_df = pd.concat([dataset_A_ID, dataset_R_ID],join="inner")
但是使用第一个选项我得到一个“你正在尝试合并对象和 int64 列”错误,即使两个列都是 d.types 对象,而第二个选项我得到一个空的 DataFrame。
我的预期输出将是与以前相同的数据框,但 R_ID 仅包含也在 A_ID 列中的值,位于相同的索引/位置:
data = {'A_ID': ['1E2', '1E3', '1E4', '1E5'], 'R_ID': [[np.nan],[np.nan],[np.nan],"1E4",]}
df = pd.DataFrame(data)
print(df)
【问题讨论】:
-
请分享您的预期输出
标签: python pandas dataframe merge concatenation