gpt4 book ai didi

python - 操作 Pandas 数据框

转载 作者:行者123 更新时间:2023-12-01 01:25:58 24 4
gpt4 key购买 nike

我有一个 DataFrame A,其中包含一列 location_ms。我想按 ;: 拆分以获得 DataFrame B

数据帧A(开始):

Beginning

数据帧B(最终):

Final

我下面的代码似乎非常迂回,希望看到解决该问题的更好的实现。通过进行分割,我创建了一个 DataFrame,其中每个元素都是列表的列表。然后我将列表列表展平以创建最终的 DataFrame。

def locpapersrc_table(df):
toflattenrows = df['location_ms'].str.split(';').apply(lambda x:[c.split(':') for c in x]).values.tolist()
singlelistoflist = [item for sublist in toflatten for item in sublist]
tmp = pd.DataFrame(singlelistoflist)
return tmp

这个版本2比第一个版本慢,但也是另一种非常迂回的方法。

def version2(df):
xx = df["location_ms"].str.split(';',expand = True).T
tmp = pd.melt(xx).dropna().drop(['variable'],axis=1)['value'].str.split(':',expand=True)
return tmp

谢谢!

最佳答案

尝试这样的事情。

split_df = df['location_ms'].str.split(pat=";", expand=True)

如果您想将其合并回原始数据帧,请添加类似的内容。

df = df.merge(split_df, left_index=True, right_index=True)
df = df.drop('location_ms')

对于您的新问题(按 ;: 分割):

split_df = df['location_ms'].str.split(pat=";", expand=True)
subsplit_df = pd.DataFrame(index = split_df.index)
for i in range(split_df.shape[1]):
subsplit_df = subsplit_df.merge(split_df.iloc[:, i].str.split(pat=":", expand=True), left_index=True, right_index=True)
subsplit_df.columns = range(subsplit_df.shape[1])

如果需要,您可以将其合并回上面。

关于python - 操作 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53330228/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com