python - Pandas 中的条件合并

标签 python pandas

我有一个仅包含名称的一列 Pandas 数据框:

Names
Matthew
Mark
Luke
John

我还有大约 10 个包含更多数据并且还有名称列的文件,其中一个文件是:

Names    Sum    Random_data
Matthew   200     x
James     400     y
some_guy  150     x
Wilson    500     y

而另一个文件可以有:

Names    Sum    Random_data
Luke      800     x
Bart      700     y
Sean      250     x
TOast     100     y

我希望将 10 个文件中每个文件的“Sum”列的值合并到第一个文件中的相关行作为新列。我想这可以通过循环遍历我想要搜索正确的“名称”行的所有文件,然后将两个文件作为数据帧执行合并来完成:

for data_file in all_files_that_have_data:

        data_df = pd.read_csv(data_file)
        df = df.merge(data_df, on='Name', how='left', suffixes=['','_remove'])
        cols = [c for c in df.columns if '_remove' not in c]
        df = df[cols]
        print(df.columns)

我的问题是如何在每次执行合并时不覆盖数据的情况下执行此操作。名称的正确数据可能位于一个文件中,但在与下一个文件合并时会丢失。有没有办法有条件地合并每个文件,但仅在左侧数据帧行的当前值为 NaN 时才覆盖?

最佳答案

假设您仅从 csv 文件中获取唯一值,为什么不创建一个包含 csv 文件中所有值的单个数据框,然后进行合并?

data_df = pd.DataFrame()

for data_file in all_files_that_have_data:
    data_df_temp = pd.read_csv(cpc_file)
    data_df = data_df.append(data_df_temp)

df = df.merge(data_df, on='Names', how='left')
print(df.columns)

关于python - Pandas 中的条件合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43820045/

相关文章:

javascript - Python 从 PGA 网站上的 JavaScript 表中抓取

python - 在 Python 上重命名远程服务器上的文件

python - 为什么我无法打包这个 Tkinter 菜单小部件?

python - Pandas :在列表的数据框列中索引每个列表的第一个元素

Pandas - 更改枢轴顺序以按降序排列列

python - 如何将 Pandas DataFrame 插入 Cassandra 中?

python - 无效的默认值 - Django 和 python

python - 如何从核苷酸生成 IUPAC 代码?

Python:根据另一列内容的第一个字符填充列

python - 比较 2 个 csv/dataframe 中的列后写出