Как использовать pandas python3 для получения только среднего инициала из колонки от среднего имени CSV и записи в новый CSV - PullRequest
0 голосов
/ 02 декабря 2018

Мне нужна помощь.У меня есть файл CSV, который содержит имена (имя, отчество, фамилия). Я хотел бы узнать, как использовать панд для преобразования среднего имени в среднюю букву и сохранения имени, среднего имени и фамилии в новый файл CSV.

Исходный CSV

First Name,Middle Name,Last Name
Richard,Dale,Leaphart
Jimmy,Waylon,Autry
Willie,Hank,Paisley
Richard,Jason,Timmons
Larry,Josiah,Williams

Как мне нужен новый CSV, чтобы выглядеть следующим образом:

First Name,Middle Name,Last Name
Richard,D,Leaphart
Jimmy,W,Autry
Willie,H,Paisley
Richard,J,Timmons
Larry,J,Williams

Вот код Python3, использующий панды, которые я до сих пор читали запись в новый файл CSV.Мне просто нужна помощь, чтобы изменить один столбец каждой строки, сохранив только первый символ.

'''
Read CSV file with First Name, Middle Name, Last Name
Write CSV file with First Name, Middle Initial, Last Name
Print before and after in the terminal to show work was done
'''

import pandas
from pathlib import Path, PureWindowsPath

winCsvReadPath = PureWindowsPath("D:\\TestDir\\csv\\test\\original- 
NameList.csv")
originalCsv = Path(winCsvReadPath)

winCsvWritePath= PureWindowsPath("D:\\TestDir\\csv\\test\\modded- 
NameList2.csv")
moddedCsv = Path(winCsvWritePath)

df = pandas.read_csv(originalCsv, index_col='First Name')

df.to_csv(moddedCsv)

df2 = pandas.read_csv(moddedCsv, index_col='First Name')

print(df)
print(df2)

Заранее спасибо ..

Ответы [ 2 ]

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

Или просто другой подход с str.extract

Обработка вашего CSV-файла с помощью панд:

>>> df = pd.read_csv("sample.csv", sep=",")
>>> df
  First Name Middle Name Last Name
0    Richard        Dale  Leaphart
1      Jimmy      Waylon     Autry
2     Willie        Hank   Paisley
3    Richard       Jason   Timmons
4      Larry      Josiah  Williams

Второе, извлечение среднего имени изDataFrame:

при условии, что все имена начинаются с первой буквы в верхнем регистре.

>>> df['Middle Name'] = df['Middle Name'].str.extract('([A-Z]\w{0})')
 # df['Middle Name'] = df['Middle Name'].str.extract('([A-Z]\w{0})', expand=True)
>>> df
  First Name Middle Name Last Name
0    Richard           D  Leaphart
1      Jimmy           W     Autry
2     Willie           H   Paisley
3    Richard           J   Timmons
4      Larry           J  Williams
0 голосов
/ 02 декабря 2018

Вы можете использовать аксессор str, который позволяет нарезать строки, как в обычном Python:

df['Middle Name'] = df['Middle Name'].str[0]

>>> df
  First Name Middle Name Last Name
0    Richard           D  Leaphart
1      Jimmy           W     Autry
2     Willie           H   Paisley
3    Richard           J   Timmons
4      Larry           J  Williams
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...