如何使用pandas python3从CSV的Middle name列中获取中间的首字母并写入新的CSV

2024-10-01 07:49:46 发布

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

我需要帮助。我有一个CSV文件,其中包含名称(First,Middle,Last) 我想知道一种方法,使用熊猫转换中间的名字只是一个中间的首字母,并保存名字,中间初始化,姓氏到一个新的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)

提前谢谢。。你知道吗


Tags: 文件csvpathnamerichardmiddlepandasdf
2条回答

您可以使用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

或者只是另一种方法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

第二,从数据帧中提取中间名:

假设所有名字都以大写字母开头。你知道吗

>>> 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

相关问题 更多 >