我正在努力将逗号分隔的列表转换为多列(7)数据帧。
print (type(mylist))
<type 'list'>
Print(mylist)
['AN,2__AAS000,26,20150826113000,-283.000,20150826120000,-283.000', 'AN,2__AE000,26,20150826113000,0.000,20150826120000,0.000',.........
以下内容创建单列的框架:
df = pd.DataFrame(mylist)
我已经查看了熊猫内置的csv功能,但是我的csv数据保存在一个列表中。如何简单地将列表转换为7列数据帧。
事先谢谢。
最佳答案
您需要拆分列表中的每个字符串:
import pandas as pd
df = pd.DataFrame([sub.split(",") for sub in l])
print(df)
输出:
0 1 2 3 4 5 6
0 AN 2__AS000 26 20150826113000 -283.000 20150826120000 -283.000
1 AN 2__A000 26 20150826113000 0.000 20150826120000 0.000
2 AN 2__AE000 26 20150826113000 -269.000 20150826120000 -269.000
3 AN 2__AE000 26 20150826113000 -255.000 20150826120000 -255.000
4 AN 2__AE00 26 20150826113000 -254.000 20150826120000 -254.000
如果知道要在csv中跳过多少行,则可以使用read_csv(使用
skiprows=lines_of_metadata
)完成所有操作:import pandas as pd
df = pd.read_csv("in.csv",skiprows=3,header=None)
print(df)
或者,如果元数据的每一行以某个字符开头,则可以使用注释:
df = pd.read_csv("in.csv",header=None,comment="#")
如果需要指定多个字符,则可以组合
itertools.takewhile
以xxx
开头的行:import pandas as pd
from itertools import dropwhile
import csv
with open("in.csv") as f:
f = dropwhile(lambda x: x.startswith("#!!"), f)
r = csv.reader(f)
df = pd.DataFrame().from_records(r)
使用输入数据添加一些以开头的行!!
#!! various
#!! metadata
#!! lines
AN,2__AS000,26,20150826113000,-283.000,20150826120000,-283.000
AN,2__A000,26,20150826113000,0.000,20150826120000,0.000
AN,2__AE000,26,20150826113000,-269.000,20150826120000,-269.000
AN,2__AE000,26,20150826113000,-255.000,20150826120000,-255.000
AN,2__AE00,26,20150826113000,-254.000,20150826120000,-254.000
输出:
0 1 2 3 4 5 6
0 AN 2__AS000 26 20150826113000 -283.000 20150826120000 -283.000
1 AN 2__A000 26 20150826113000 0.000 20150826120000 0.000
2 AN 2__AE000 26 20150826113000 -269.000 20150826120000 -269.000
3 AN 2__AE000 26 20150826113000 -255.000 20150826120000 -255.000
4 AN 2__AE00 26 20150826113000 -254.000 20150826120000 -254.000
关于python - Python将逗号分隔列表转换为pandas数据帧,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32224363/