Python 如何将数据从文本转换为CSV
我有文本文件data.txt,如下所示: 我已尝试使用python转换此文件Python 如何将数据从文本转换为CSV,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有文本文件data.txt,如下所示: 我已尝试使用python转换此文件 import pandas as pd df = pd.read_fwf('data.txt') df.to_csv('data.csv') 我希望获得如下所示的results data.csv: 我该怎么办?将numpy作为np导入 df['Gender']=np.where(df['male'].eq(1),'male','femal') df=df.drop(列={'male','memale'}) df.to
import pandas as pd
df = pd.read_fwf('data.txt')
df.to_csv('data.csv')
我希望获得如下所示的results data.csv:
我该怎么办?将numpy作为np导入
df['Gender']=np.where(df['male'].eq(1),'male','femal')
df=df.drop(列={'male','memale'})
df.to_csv('data.csv',index=False)
姓名性别
0巴渝男
1琼森男
2安娜女
您可以在保存到csv
之前使用idxmax()
:
df['Gender'] = df[['male', 'female']].idxmax(axis=1)
df = df.drop(columns=['male', 'female'])
只需替换和重命名即可 数据帧: 结果: 正在将数据帧保存到csv
>>> df = df.replace({ 0: "male", 1: "Female"}).drop(columns {'male'}).rename(columns={'female': 'Gender'})
>>> df.to_csv('data.csv', index=False)
您的CSV将如下所示,并以逗号分隔
$ cat data.csv
Name,Gender
bayu,male
jason,male
anna,Female
或者,只需使用idxmax
和df.assign
即可将值全部分配回nw列
>>> df.assign(Gender = df[['male','female']].idxmax(axis=1)).drop(columns={'male', 'female'})
Name Gender
0 bayu male
1 jason male
2 anna female
2) 创建函数然后使用apply
方法的另一种方法
def setval(col):
col = str(col)
if col.startswith('0'):
return 'Male'
if col.startswith('1'):
return 'Female'
>>> df.assign(Gender = df[ 'female'].apply(setval)).drop({"female", "male"}, axis=1)
Name Gender
0 bayu Male
1 jason Male
2 anna Female
3) 只是为了子孙后代。。
您可以创建一个dict,然后将dict映射到其中一列,并使用df将新值分配到一个新列。assign
进一步删除不需要的列
在这里,您可以轻松地使用map
或replace
方法
>>> newVal = {0:'Male', 1: 'Female'} # dictionary paired with key, values
a) 在下面的示例中,axis=1
表示更新方法的列
>>> df.assign(Gender=df.female.map(newVal)).drop({'male', 'female'},axis=1)
Name Gender
0 bayu Male
1 jason Male
2 anna Female
b) 而在下面的示例中,我们明确提到它将应用于列,这是旧方法
>>> df.assign(Gender=df.female.map(newVal)).drop(columns={'male', 'female'})
Name Gender
0 bayu Male
1 jason Male
2 anna Female
使用。替换
>>> df.assign(Gender=df.female.replace(newVal)).drop({'male', 'female'},axis=1)
Name Gender
0 bayu Male
1 jason Male
2 anna Female
有np的答案很好。其中
+1请接受最适合您的答案,这样它会从未答复的队列中清除,并帮助其他正在寻找相同解决方案的人。感谢@Joe的感谢。
>>> newVal = {0:'Male', 1: 'Female'} # dictionary paired with key, values
>>> df.assign(Gender=df.female.map(newVal)).drop({'male', 'female'},axis=1)
Name Gender
0 bayu Male
1 jason Male
2 anna Female
>>> df.assign(Gender=df.female.map(newVal)).drop(columns={'male', 'female'})
Name Gender
0 bayu Male
1 jason Male
2 anna Female
>>> df.assign(Gender=df.female.replace(newVal)).drop({'male', 'female'},axis=1)
Name Gender
0 bayu Male
1 jason Male
2 anna Female