2016-06-03 1 views
1

У меня есть небольшой образец набора данных:получить значение панд другим файлом питона панд

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 

Я хочу пропустить столбец «CD» из файла данных и файла .txt, если есть совпадение, распечатать идентификатор и компакт-диск в файле .txt е.

желание выход, 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) 

это не совсем правильно, и я думаю, что я мог бы быть более думать, что это.

ответ

4
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 нагрузок в DataFrame. Вы можете выбрать один столбец в DataFrame для определения серии 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 является True:

    result = df.loc[mask] 
    #   CD ID 
    # 0 AAAAAAA H576 
    # 1 BBBBB H577 
    # 4 EEEEEEE H700 
    
  • И, наконец, желаемая строка может быть сформирована с использованием df.to_csv. Пройдя None в качестве первого аргумента df.to_csv, возвращается строка (вместо записи в файл)

 Смежные вопросы

  • Нет связанных вопросов^_^