我有一个很大的df,在要绘制的列中有一个列表。该列的外观与此类似:
tracking_information
'438 673.4841918945312 1552924050927 ; 666 709.5 1552924050911 ; 344...'
'343 775.5 1552924084000 ; 460.4154052734375 669 1552924084020 ; 403...'
第一个数字是x坐标,第二个y是时间戳,第三个是时间戳。该列表每行有1000个条目。 我尝试将其装配到.array()中,但由于格式原因,我无法做到这一点。我还尝试将其转换为int,然后使用pd.Series,该错误也不会导致任何错误。
理想情况下,每一行都会创建一个新的df,标题为x,y,timestamp,每个值都分隔在一行中,类似于:
df2:
x, y, z
438, 673.4841918945312, 1552924050927
666, 709.5, 1552924050911
答案 0 :(得分:0)
1>创建三个单独的列表
2>遍历数据框的行和列,并(如您提到的那样,您的单元格是列表),然后遍历列表,将其值划分为上面创建的列表
3>现在绘制图形。
评论以获得更多帮助,谢谢。
答案 1 :(得分:0)
尝试以下代码:
样本输入:
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...
现在尝试以下方法转换为所需的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"])
输出:
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
答案 2 :(得分:-1)
这就是你想要的
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)