2024-09-22 18:27:55 发布
网友
嗨,我正在试着做一个查找列表,给定一个listID我可以找到拥有它的用户,而给定一个UserID我可以找到该用户的所有列表。在
数据格式如下:
[['34', '345'], ['12', '23,534,34'], ['1', '13,42']]
我想要的是一个pandas数据帧,它看起来像:
我的想法是把列表的第二个字符串用逗号分开,但从那里我就卡住了。有什么建议吗?在
您可以执行以下操作:
df_tmp = pd.DataFrame([['34', '345'], ['12', '23,534,34'], ['1', '13,42']], columns=['ListID', 'UserIDs']) s = df_tmp['UserIDs'].str.split(',', expand=True).stack() i = s.index.get_level_values(0) df = df_tmp.loc[i].copy() df["UserID"] = s.values del df['UserIDs']
有一个办法
In [386]: L = [['34', '345'], ['12', '23,534,34'], ['1', '13,42']] In [387]: (pd.DataFrame(L, columns=['UserID', 'ListID']) .set_index('UserID') .ListID.str.split(',') .apply(pd.Series) .stack() .reset_index(level=0, name='ListID')) Out[387]: UserID ListID 0 34 345 1 12 23 2 12 534 3 12 34 4 1 13 5 1 42
在将数据输入数据帧构造函数之前,应先清理数据。下面是一个简单的脚本:
import pandas as pd data = [['34', '345'], ['12', '23,534,34'], ['1', '13,42']] new_data = [] for row in data: x, yvals = row for y in yvals.split(','): new_data.append([x,y]) df = pd.DataFrame(new_data, columns=['UserID', 'ListID'])
您可以执行以下操作:
有一个办法
在将数据输入数据帧构造函数之前,应先清理数据。下面是一个简单的脚本:
相关问题 更多 >
编程相关推荐