Pandas数据帧列表

2024-09-22 18:27:55 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我正在试着做一个查找列表,给定一个listID我可以找到拥有它的用户,而给定一个UserID我可以找到该用户的所有列表。在

数据格式如下:

[['34', '345'],
['12', '23,534,34'],
['1', '13,42']]

我想要的是一个pandas数据帧,它看起来像:

^{pr2}$

我的想法是把列表的第二个字符串用逗号分开,但从那里我就卡住了。有什么建议吗?在


Tags: 数据字符串用户pandas列表建议逗号数据格式
3条回答

您可以执行以下操作:

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'])

相关问题 更多 >