使用 pandas 选择和附加一些数据

Posted

技术标签:

【中文标题】使用 pandas 选择和附加一些数据【英文标题】:Selecting and appending some data with pandas 【发布时间】:2021-12-21 01:44:37 【问题描述】:

合并两个文件
    我想通过在列中搜索字母来查找“File1”中的字母。 我想在“文件 2”中搜索“文件 1”中找到的字母时找到包含这些字母的行。 选择“步骤 2”中找到的行下方的行。 将“步骤 3”的结果粘贴到“文件 1”中。 -- 文件#1

*示例

import pandas as pd

File1 = pd.read_csv('sdfsdc.txt', sep=',', header = None)
File2 = pd.read_csv('sdfsdc.csv', 'r')

searchfor = list(File1[0])          #--> it's working:)
for x in searchfor:
    if File2[File2[0].str.contains(x)]:  #--> it's not working!!!
        

【问题讨论】:

【参考方案1】:

您可以使用str.extractmerge

pattern = f"('|'.join(df1['A'].tolist()))"
match = df2['B'].str.extract(pattern, expand=False).shift()

out = pd.merge(df1, df2, left_on='A', right_on=match, how='left')

输出:

>>> out
     A             B
0  JCW  Information2
1  MBM           NaN
2  COP  Information1
3  KVI           NaN
4  ECX  Information3

设置:

data = 'A': ['JCW', 'MBM', 'COP', 'KVI', 'ECX']
df1 = pd.DataFrame(data)

data = 'B': ['dflqksdhCOPdsds', 'Information1', 'hpotrtjgJCWee28', 
              'Information2', 'xrjzeoazECXeiz1', 'Information3']
df2 = pd.DataFrame(data)

【讨论】:

认为您只是有一个小错字,应该是 df1 = pd.DataFrame(data)df2。但是出色(且快速)的答案! 非常感谢,@JohnCollins。我修正了我的答案。 很抱歉,有没有办法不用熊猫? 也没有pd.read_csv

以上是关于使用 pandas 选择和附加一些数据的主要内容,如果未能解决你的问题,请参考以下文章

有效地附加到 pandas 数据帧

使用 pandas 合并和附加多个 CSV/数据帧的最快方法

将值附加到 Pandas 系列

无法在嵌套循环中使用 pandas 附加更大的数据帧。如何更改为 numpy 向量化?

将提取的列附加到没有索引的列表中:Pandas

使用 Pandas、Python 将数据附加到 HDF5 文件