Python 将txt文件导入数据帧时遇到困难
我正在尝试导入一个txt文件(到一个数据框中),看起来像这样Python 将txt文件导入数据帧时遇到困难,python,pandas,dataframe,Python,Pandas,Dataframe,我正在尝试导入一个txt文件(到一个数据框中),看起来像这样 12345 20191113418824004 S20191013 23456 20191030T20.60XA X20191230 数据帧必须看起来像 memberid Date1 Code Flag Date2 12345 20191113 418824004 S 20191013 2
12345 20191113418824004 S20191013
23456 20191030T20.60XA X20191230
数据帧必须看起来像
memberid Date1 Code Flag Date2
12345 20191113 418824004 S 20191013
23456 20191030 T20.60XA X 20191230
到目前为止,我试着
data = pd.read_csv ("diag.txt",delimiter = "\t")
df = pd.DataFrame(data, columns= ['memberid','Date1','Code','Flag','Date2'])
但是我把所有的专栏都列为NAN。不知道为什么连memberid列都没有拾取。
非常感谢您的指导
这里是分离的规则-
1234520191113418824004 S20191013
。第一个连续的数字序列(直到我们到达第一个空格)12345
是memberid
20191113418824004
)中,第一个8
数字成为Date1
。第一个8
数字后剩下的任何数字都将成为code
(在这种情况下20191113
将成为日期,其余的-418824004
将成为代码)S20191013
。第一个字母成为标志
,其余字母成为日期2
。如果我可以说,第三列总是varchar(9)
。因此,在本例中,S是标志,其余的20191013
是Date2
df=pd.read\u csv(“您的文件.txt”,sep=r“\s+”,header=None)
df[[“Date1”,“Code”]=df.pop(1).str.extract(r“(\d{8})(.*)”,expand=True)
df[[“Flag”,“Date2”]=df.pop(2.str.extract(r)([A-Z])(.*)”,expand=True)
df=df.rename(列={0:“memberid”})
打印(df)
印刷品:
memberid日期1代码标志日期2
0 12345 20191113 418824004 S 20191013
123456 20191030 T20.60XA X 20191230
如果您有固定宽度的数据,您可能希望使用而不是读取csv,这样您就不必事后解析,而是在读取时直接使用正确的规范,如下所示(宽度是每个列宽的列表,而不是它们的累积和,请小心):
如果要获得列名,可以将其作为名称参数传递:
In [34]: pd.read_fwf("test.txt", widths=[16, 8, 20, 1, 30], header=None, names=['memberid','Date1','Code','Flag','Date2'])
Out[34]:
memberid Date1 Code Flag Date2
0 12345 20191113 418824004 S 20191013
1 23456 20191030 T20.60XA X 20191230
我不知道
txt
文件是否存在复制和粘贴问题,但这些值是否像文件中那样粘在一起,或者在S20191013
之间是否存在选项卡?如果这些值真的像那样粘在一起,你能概述一下它们应该如何被分成列的规则吗?您好,这不是复制粘贴问题。我更新了我的问题,提出了如何将它们分开的规则。如果你能看一看,我很乐意。谢谢你的意见。
In [34]: pd.read_fwf("test.txt", widths=[16, 8, 20, 1, 30], header=None, names=['memberid','Date1','Code','Flag','Date2'])
Out[34]:
memberid Date1 Code Flag Date2
0 12345 20191113 418824004 S 20191013
1 23456 20191030 T20.60XA X 20191230