我有一个“csv”文件,如下所示:
样本数据:
Name : Jai
Age : 25
Address: N P IV
Country:
Name : Jack
Age : 18
Address: T U W IX
Country: USA
我想把这一列分成多列,就像这样, 预期结果:
Name Age Address Country
Jai 25 N P IV NA
Jack 18 T U W IX USA
谢谢
最佳答案
首先创建 2 列 DataFrame
by read_csv
使用分隔符 :\s+
表示 :
并带有一个或多个空格,然后将第二列转换为 numpy 数组并重新整形为 4 'columns'
,创建DataFrame 通过构造函数将第一列的前 4 个值转换为新列名称,最后(如果需要)将 Age
列转换为整数:
import pandas as pd
import numpy as np
temp=u"""Name : Jai
Age : 25
Address: N P IV
Country:
Name : Jack
Age : 18
Address: T U W IX
Country: USA"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(pd.compat.StringIO(temp), sep=":\s+", names=['col1','col2'])
print (df)
col1 col2
0 Name Jai
1 Age 25
2 Address N P IV
3 Country: None
4 Name Jack
5 Age 18
6 Address T U W IX
7 Country USA
c = df['col1'].iloc[:4].str.strip(' :')
#pandas 0.24+
df = pd.DataFrame(df['col2'].to_numpy().reshape(-1, 4), columns=c).rename_axis(None, axis=1)
#pandas below 0.24
#df = pd.DataFrame(df['col2'].values.reshape(-1, 4), columns=c).rename_axis(None, axis=1)
df['Age'] = df['Age'].astype(int)
print (df)
Name Age Address Country
0 Jai 25 N P IV None
1 Jack 18 T U W IX USA
关于python - 如何在Python中将一列分成多列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56896663/