записать данные панды в CSV - PullRequest
0 голосов
/ 01 июня 2018

У меня есть лист CSV, и он выглядит как ниже, каждый столбец имеет некоторые данные.Хотите отфильтровать данные по имени.Я знаю имена, по которым я должен фильтровать.

Name  gender  address  age  post  city 
A      M       abc     20   dd     ASD
C      F       xyz     21   ll     KLM
B      M       lmn     22   mm     NOP

Хотите вывод как.

Name    address     post   city 
A         abc        dd     ASD
B         lmn        mm     NOP

Код ниже явно перезаписывает первые данные в csv.Как избежать этого и исправить это.Также хочу избавиться от индексной колонки от Excel.Есть ли лучший способ кодировать это?Новый для Панды здесь.

for i in ['A','B']: #The names list is huge , taking 2 as example
        df=pd.read_csv('some.xlsx',index_col=False)
        df1= df.loc[df['Name'] == i, ['Name','address','post','city']]
df1.to_csv('ABC.csv')

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Series.str.contains - это функция, которая вам нужна.Он возвращает логическую серию, которая может использоваться для фильтрации DataFrame при использовании в качестве его индекса.Для нескольких имен разделите имена с помощью | (символ канала).

names_list = ['A', 'B']
my_names = '|'.join(names_list)  # my_names = "A|B"
df = pd.read_csv('some.xlsx', index_col=False)
df1 = df1[df["Name"].str.contains(my_names)]
df1 = df1[['Name', 'address', 'post', 'city']]    
df1.to_csv("filtered.csv")
0 голосов
/ 01 июня 2018

Попробуйте использовать isin :

Пример:

df=pd.read_csv('some.xlsx',index_col=False)
df1 = df.loc[df['Name'].isin(['A','B']), ['Name','address','post','city']]
df1.to_csv('ABC.csv')
  • Передать список в качестве вводаisin

Редактировать согласно комментарию - Использование цикла

df1 = None
for i in ['A','B']:
    if df1 is not None:
        df1 = df1.append( df.loc[df['Name'] == i, ['Name','address','post','city']] )
    else:
        df1 =  df.loc[df['Name'] == i, ['Name','address','post','city']]

df1.to_csv(filename)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...