Python 将列中的长列表转换为新df

Python 将列中的长列表转换为新df,python,pandas,sorting,dataframe,plot,Python,Pandas,Sorting,Dataframe,Plot,我有一个巨大的df,在我想要绘制的列中有一个列表。该列的外观与此类似: tracking_information '438 673.4841918945312 1552924050927 ; 666 709.5 1552924050911 ; 344...' '343 775.5 1552924084000 ; 460.4154052734375 669 1552924084020 ; 403...' df2: x, y, z 438, 673.4841918945312, 155292405

我有一个巨大的df,在我想要绘制的列中有一个列表。该列的外观与此类似:

tracking_information
'438 673.4841918945312 1552924050927 ; 666 709.5 1552924050911 ; 344...'
'343 775.5 1552924084000 ; 460.4154052734375 669 1552924084020 ; 403...'
df2:
x, y, z
438, 673.4841918945312, 1552924050927 
666, 709.5, 1552924050911
第一个数字是x坐标,第二个是y坐标,第三个是时间戳。列表中每行有1000个条目。 我尝试将其放入.array()中,但由于格式问题,我无法这样做。我还尝试将其转换为int,然后使用pd.Series,这只会导致错误

理想情况下,每一行创建一个新的df,标题x、y、时间戳和每一个值在一行中分开,如下所示:

tracking_information
'438 673.4841918945312 1552924050927 ; 666 709.5 1552924050911 ; 344...'
'343 775.5 1552924084000 ; 460.4154052734375 669 1552924084020 ; 403...'
df2:
x, y, z
438, 673.4841918945312, 1552924050927 
666, 709.5, 1552924050911

1> 创建三个单独的列表
2> 迭代您的数据帧行和列(正如您提到的,您的单元格就是列表),然后迭代列表将其值划分为上面创建的列表 3> 现在绘制图表。 评论以获取更多帮助,谢谢。

请尝试以下代码:

样本输入:

import pandas as pd
df_inp = pd.DataFrame({"col1":["438 673.4841918945312 1552924050927 ; 666 709.5 1552924050911 ;", "438 673.4841918945312 1552924050927 ; 666 709.5 1552924050911 ;","343 775.5 1552924084000 ; 460.4154052734375 669 1552924084020 ;"]})
输出:

col1
0   438 673.4841918945312 1552924050927 ; 666 709....
1   438 673.4841918945312 1552924050927 ; 666 709....
2   343 775.5 1552924084000 ; 460.4154052734375 66...
  x y    z
0   438 673.4841918945312   1552924050927
1   666 709.5   1552924050911
2   438 673.4841918945312   1552924050927
3   666 709.5   1552924050911
4   343 775.5   1552924084000
5   460.4154052734375   669 1552924084020
现在,请尝试将下面的格式转换为所需的DF格式:

def expand_input(inp):
    return [x.strip().split(" ") for x in inp.split(";")]

pd.DataFrame([
    list_vars for x in df_inp["col1"].apply(expand_input).iteritems() for list_vars in x[1] if list_vars[0]
],  columns=["x","y","z"])
输出:

col1
0   438 673.4841918945312 1552924050927 ; 666 709....
1   438 673.4841918945312 1552924050927 ; 666 709....
2   343 775.5 1552924084000 ; 460.4154052734375 66...
  x y    z
0   438 673.4841918945312   1552924050927
1   666 709.5   1552924050911
2   438 673.4841918945312   1552924050927
3   666 709.5   1552924050911
4   343 775.5   1552924084000
5   460.4154052734375   669 1552924084020
这是你想要的

test = ['438;666;344','asd;aweq;ascx']
df = pd.DataFrame(test)
splittedDf=df[0].str.split(' ')
arr = []
for i in range(len(splittedDf)):
   arr.append(splittedDf[i])
new_df = pd.DataFrame(arr)
print(new_df)