Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.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_Dataframe - Fatal编程技术网

Python 将字符串和整数列相乘

Python 将字符串和整数列相乘,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个具有这种结构[1]的数据帧,我想将字符串和整数列相乘 +----------------------+------------+-------------------------+-----------+--+ | url | date | word | mentioned | | |----------------------+------------+------------------------

我有一个具有这种结构[1]的数据帧,我想将字符串和整数列相乘

+----------------------+------------+-------------------------+-----------+--+
| url                  | date       | word                    | mentioned |  |
|----------------------+------------+-------------------------+-----------+--+
| newspaperarticle.com | 2018-12-22 | [canada,house,micheal]  | [2,2,1]   |  |
| articleUSA.com       | 2018-12-23 | [new york,murder,angry] | [2,3,1]   |  |
+----------------------+------------+-------------------------+-----------+-
我要在列名中乘以单词数

+----------------------+------------+-------------------------+-------+---+--+
| url                  | date       | word                            |mentioned 
|----------------------+------------+-------------------------+-------+---+--+
| newspaperarticle.com | 2018-12-22 | [canada,canada,house,..]        |[2,2,1]     
| articleUSA.com       | 2018-12-23 | [new york,new york,murder,..]   |[2,3,1]   
+----------------------+------------+-------------------------+-------+---+--+
到目前为止,我所做的是用不起作用的乘法方法将列相乘。我还尝试了for循环,对单个元素进行索引并将它们相乘,但总是将错误字符串从索引中删除。

您可以使用级别为0的聚合为列表:

s = [df[i].explode() for i in ['word','mentioned']]
df['word'] = s[0].repeat(s[1]).groupby(level=0).agg(list)


注意:这是假设所提到的
word
列是一系列列表,而不是列表的字符串表示形式。

ast.literal\u eval
将在字符串
[canada,canada,house]
上失败,因为缺少字符串分隔符。我真诚地希望这些是列表。@Błotosmętek你是对的,删除了那张便条,然后我们必须处理输入数据。我也希望如此:)不用担心,这些都是列表,谢谢你从未听说过重复函数。这种方法比执行多个for循环和围绕索引工作要容易得多:)
print(df)

                    url        date  \
0  newspaperarticle.com  2018-12-22   
1        articleUSA.com  2018-12-23   

                                                word  mentioned  
0            [canada, canada, house, house, micheal]  [2, 2, 1]  
1  [new york, new york, murder, murder, murder, a...  [2, 3, 1]