[英]How to separate one column into multiple columns in python?
我有一个“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
谢谢
首先通过read_csv
创建 2 列DataFrame
与分隔符:\\s+
for :
带有一个或多个空格,然后将第二列转换为 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
如果将数据格式化为 JSON,则可以遍历对象并将所有字典项打印到一行中。 唯一的问题是使打印出来的文本间距正确; 排列成漂亮的一致列。
data = [
{'Name':'Jai',
'Age':25,
'Address': 'N P IV',
'Country': 'Canada'},
{'Name' : 'Jack',
'Age' : 18,
'Address': 'T U W IX',
'Country': 'USA'}
]
print("Name\tAge\tAddress\tCountry")
out=""
for adres in data:
for x, y in adres.items():
out=out+str(y)+"\t"
print(out)
out=""
脚本输出:
Name Age Address Country
Jai 25 N P IV Canada
Jack 18 T U W IX USA
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.