Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.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 在DataFrame中将字从行条目提取到列_Python_Pandas - Fatal编程技术网

Python 在DataFrame中将字从行条目提取到列

Python 在DataFrame中将字从行条目提取到列,python,pandas,Python,Pandas,我不熟悉熊猫和蟒蛇 我的数据框如下所示: Search query Impressions Clicks iPhone X 2019 10000 50 iPhoneX 2019 15 64 iPhone 11 60 87 Nokia 3310 444

我不熟悉熊猫和蟒蛇

我的数据框如下所示:

Search query             Impressions         Clicks
iPhone X 2019            10000               50
iPhoneX 2019             15                  64
iPhone 11                60                  87
Nokia 3310               444                 61
Nokia 3310 best phone    1                   30
Search query             Impressions         Clicks         Word
iPhone X 2019            10000               50             iPhone
iPhone X 2019            10000               50             X
iPhone X 2019            10000               50             2019
iPhoneX 2019             15                  64             iPhoneX
iPhoneX 2019             15                  64             2019
iPhone 11                60                  87             iPhone
iPhone 11                60                  87             11
Nokia 3310               444                 61             Nokia
Nokia 3310               444                 61             3310
Nokia 3310 best phone    1                   30             Nokia
Nokia 3310 best phone    1                   30             3310
Nokia 3310 best phone    1                   30             best
Nokia 3310 best phone    1                   30             phone
def f(x):
    x = x.split(' ')
    y = len(x)
    # at this point I am not sure how I would apply the multiplication and assign each word in 'Word' column once every word
我正在尝试创建另一个名为
Word
的列,该列将为每个
搜索查询
行中的每个单词提供值

示例:

Search query             Impressions         Clicks
iPhone X 2019            10000               50
iPhoneX 2019             15                  64
iPhone 11                60                  87
Nokia 3310               444                 61
Nokia 3310 best phone    1                   30
Search query             Impressions         Clicks         Word
iPhone X 2019            10000               50             iPhone
iPhone X 2019            10000               50             X
iPhone X 2019            10000               50             2019
iPhoneX 2019             15                  64             iPhoneX
iPhoneX 2019             15                  64             2019
iPhone 11                60                  87             iPhone
iPhone 11                60                  87             11
Nokia 3310               444                 61             Nokia
Nokia 3310               444                 61             3310
Nokia 3310 best phone    1                   30             Nokia
Nokia 3310 best phone    1                   30             3310
Nokia 3310 best phone    1                   30             best
Nokia 3310 best phone    1                   30             phone
def f(x):
    x = x.split(' ')
    y = len(x)
    # at this point I am not sure how I would apply the multiplication and assign each word in 'Word' column once every word
因此,每行乘以列
搜索查询中的字符串数,列
Word
保存列
搜索查询中的每个字符串

我所尝试的:

Search query             Impressions         Clicks
iPhone X 2019            10000               50
iPhoneX 2019             15                  64
iPhone 11                60                  87
Nokia 3310               444                 61
Nokia 3310 best phone    1                   30
Search query             Impressions         Clicks         Word
iPhone X 2019            10000               50             iPhone
iPhone X 2019            10000               50             X
iPhone X 2019            10000               50             2019
iPhoneX 2019             15                  64             iPhoneX
iPhoneX 2019             15                  64             2019
iPhone 11                60                  87             iPhone
iPhone 11                60                  87             11
Nokia 3310               444                 61             Nokia
Nokia 3310               444                 61             3310
Nokia 3310 best phone    1                   30             Nokia
Nokia 3310 best phone    1                   30             3310
Nokia 3310 best phone    1                   30             best
Nokia 3310 best phone    1                   30             phone
def f(x):
    x = x.split(' ')
    y = len(x)
    # at this point I am not sure how I would apply the multiplication and assign each word in 'Word' column once every word

感谢您的建议。

创建新列
Word
由拆分的值填充,最后将值转换为默认索引:

df = df.assign(Word = df['Search query'].str.split()).explode('Word').reset_index(drop=True)
print (df)
             Search query  Impressions  Clicks     Word
0           iPhone X 2019        10000      50   iPhone
1           iPhone X 2019        10000      50        X
2           iPhone X 2019        10000      50     2019
3            iPhoneX 2019           15      64  iPhoneX
4            iPhoneX 2019           15      64     2019
5               iPhone 11           60      87   iPhone
6               iPhone 11           60      87       11
7              Nokia 3310          444      61    Nokia
8              Nokia 3310          444      61     3310
9   Nokia 3310 best phone            1      30    Nokia
10  Nokia 3310 best phone            1      30     3310
11  Nokia 3310 best phone            1      30     best
12  Nokia 3310 best phone            1      30    phone

谢谢,我们将查看
数据帧。分解
!为什么我需要在最后将值转换为默认索引?@JonasPalačionis-我认为这是因为一些pandas函数(如reindex)在使用重复索引时失败了,我认为如果使用默认索引,性能应该会更好。