Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按列表项的数量筛选数据帧,并按对重新排列输出_Python_Pandas_Pandas Groupby - Fatal编程技术网

Python 按列表项的数量筛选数据帧,并按对重新排列输出

Python 按列表项的数量筛选数据帧,并按对重新排列输出,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我正在使用一个csv文件,其格式如下所示,通过使用df.groupby来过滤公开共享链接的ID url id bbc.com ['183','194','101'] cnn.com ['182', '193', '103'] google.com ['131'] 我现在尝试将其转换为一个新的csv,每次两个ID共享同一个链接时都会显示 因此,我的理想输出如下所示,特别是没有引号: source target 183, 194 183, 101 194,

我正在使用一个csv文件,其格式如下所示,通过使用df.groupby来过滤公开共享链接的ID

 url        id
 bbc.com     ['183','194','101']
 cnn.com     ['182', '193', '103']
 google.com  ['131']
我现在尝试将其转换为一个新的csv,每次两个ID共享同一个链接时都会显示

因此,我的理想输出如下所示,特别是没有引号:

source target
183, 194
183, 101
194, 101
182, 193
182, 103
103, 193
我真的很感激任何帮助


我尝试从df.drop开始删除包含少于一个条目的行,但它将整个条目作为字符串读取,即,['183',194',101']作为整个字符串而不是列表,因此我有点卡住了。

我想您需要使用itertools.compositions(x,k)。下面是一个例子:

import pandas as pd
import numpy as np
import itertools

df = pd.DataFrame({ 'url': ['bbc.com', 'cnn.com', 'google.com'],
              'id' : [['183','194','101'], ['182', '193', '103'], ['131']  ]})

df

    url         id
0   bbc.com     [183, 194, 101]
1   cnn.com     [182, 193, 103]
2   google.com  [131]
以下是生成输出的循环:

k =2
for x in df['id'].values:
    for a, b in itertools.combinations(x, k):
          print(a, b)
输出:

 183 194
 183 101
 194 101
 182 193
 182 103
 193 103

我想您需要使用itertools.compositions(x,k)。下面是一个例子:

import pandas as pd
import numpy as np
import itertools

df = pd.DataFrame({ 'url': ['bbc.com', 'cnn.com', 'google.com'],
              'id' : [['183','194','101'], ['182', '193', '103'], ['131']  ]})

df

    url         id
0   bbc.com     [183, 194, 101]
1   cnn.com     [182, 193, 103]
2   google.com  [131]
以下是生成输出的循环:

k =2
for x in df['id'].values:
    for a, b in itertools.combinations(x, k):
          print(a, b)
输出:

 183 194
 183 101
 194 101
 182 193
 182 103
 193 103

非常感谢你的帮助!这很有效。我意识到我最初遇到的问题是,它在退出代码为-9的情况下崩溃了。查找后,似乎表示系统内存不足。因此,我现在正在研究一种方法,将流程分为多个部分,因为这段代码在较小的数据集上运行良好。非常感谢您的帮助!这很有效。我意识到我最初遇到的问题是,它在退出代码为-9的情况下崩溃了。查找后,似乎表示系统内存不足。因此,我现在正在研究一种方法,将流程分割成块,因为这段代码可以在较小的数据集上正常工作。