Выбрать столбец из нескольких DataFrames на основе одного и того же префикса заголовка - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть функция, которая перебирает строки csv для столбца Age, и если возраст отрицательный, она печатает значения Key и Age в текстовый файл.

def neg_check():
    results = []

    file_path = input('Enter file path: ')
    file_data = pd.read_csv(file_path, encoding = 'utf-8')

    for index, row in file_data.iterrows():
        if row['Age'] < 0:
            results.append((row['Key'], row['Age']))
    with open('results.txt', 'w') as outfile:
        outfile.write("\n".join(map(str, results)))   
        outfile.close()

Чтобы сделать этот код повторяемым, как я могу изменить его, чтобы он повторял строки, если столбец начинается с "Age"?Мои файлы имеют много столбцов, которые начинаются с "Age", но заканчиваются по-другому.,Я попробовал следующее ...

if row.startswith['Age'] < 0:

и

if row[row.startswith('Age')] < 0:

но выдает AttributeError: 'Series' object has no attribute 'startswith' ошибку.

Мои CSV-файлы:

образец 1

Key   Sex     Age
    1        Male          46
    2        Female        34

образец 2

Key   Sex     AgeLast
    1        Male          46
    2        Female        34

образец 3

Key   Sex     AgeFirst
    1        Male          46
    2        Female        34

1 Ответ

0 голосов
/ 05 декабря 2018

Я бы сделал это за один шаг, но есть несколько вариантов.Одним из них является filter:

v = df[df.filter(like='AgeAt').iloc[:, 0] < 0]

Или

c = df.columns[df.columns.str.startswith('AgeAt')][0]
v = df[df[c] < 0]

Наконец, чтобы записать в CSV, используйте

if not v.empty:
    v.to_csv('invalid.csv')

Циклическая обработка ваших данных не требуетсяс пандами.

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