通过另一个文件获取pandas值

2024-05-16 07:35:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个小样本数据集:

import pandas as pd

df = {'ID': ['H576','H577','H578','H600', 'H700'],
  'CD': ['AAAAAAA', 'BBBBB', 'CCCCCC','DDDDDD', 'EEEEEEE']}

df = pd.DataFrame(df)

它看起来像:

Out[76]: 
    CD    ID
0  AAAAAAA  H576
1    BBBBB  H577
2   CCCCCC  H578
3   DDDDDD  H600
4  EEEEEEE  H700

我还有一个小的.txt文件:

AAAAAAA
BBBBB
EEEEEEE

我想从dataframe和.txt文件中遍历'CD'列,如果有匹配项,则在.txt文件中打印出ID和CD

期望输出,output.txt:

H576
AAAAAAA
H577
BBBBB
H700
EEEEEEE

我的尝试:

import pandas as pd


df = {'ID': ['H576','H577','H578','H600', 'H700'],
  'CD': ['AAAAAAA', 'BBBBB', 'CCCCCC','DDDDDD', 'EEEEEEE']}


df = pd.DataFrame(df)
f = open('file.txt') 

for i in data.CD:
    i = i.strip()    
    for line in f:
        line = line.strip()

        if df["CD"].str.contains(line).any():
            position = df.index.get_indexer_for((df[df["CD"].str.contains(line)].index))
            z = df.ReadID[position]
            print(z)
            print(line)

这不太对,我想我可能想得太多了


Tags: txtiddflinecdpdaaaaaaacccccc
1条回答
网友
1楼 · 发布于 2024-05-16 07:35:00
import pandas as pd

df = {'ID': ['H576','H577','H578','H600', 'H700'],
      'CD': ['AAAAAAA', 'BBBBB', 'CCCCCC','DDDDDD', 'EEEEEEE']}
df = pd.DataFrame(df)
keywords = pd.read_csv('file.txt', header=None)[0]

mask = df['CD'].isin(keywords)
result = df.loc[mask]
print(result[['ID', 'CD']].stack().to_csv(None, index=False))

收益率

H576
AAAAAAA
H577
BBBBB
H700
EEEEEEE

  • pd.read_csvfile.txt加载到数据帧中。然后可以选择数据帧中的单个列来定义序列keywords

    keywords = pd.read_csv('file.txt', header=None)[0]
    
  • 然后可以使用Series.isin方法构造布尔级数,当df['CD']中的值位于keywords时,该级数为真:

    mask = df['CD'].isin(keywords)
    # 0     True
    # 1     True
    # 2    False
    # 3    False
    # 4     True
    
  • 使用df.loc[mask]选择df的行,其中mask为真:

    result = df.loc[mask]
    #         CD    ID
    # 0  AAAAAAA  H576
    # 1    BBBBB  H577
    # 4  EEEEEEE  H700
    
  • 最后,可以使用df.to_csv形成所需的字符串。通过传递None作为第一个参数df.to_csv,将返回一个字符串(而不是写入文件)

相关问题 更多 >