相关疑难解决方法(0)

如何在pandas DataFrame中删除(爆炸)列?

我有以下DataFrame,其中一列是一个对象(列表类型单元格):

df=pd.DataFrame({'A':[1,2],'B':[[1,2],[1,2]]})
df
Out[458]: 
   A       B
0  1  [1, 2]
1  2  [1, 2]
Run Code Online (Sandbox Code Playgroud)

我的预期输出是:

   A  B
0  1  1
1  1  2
3  2  1
4  2  2
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能做到这一点?


相关问题

pandas:当单元格内容是列表时,为列表中的每个元素创建一行

好的问题和答案,但只处理一列列表(在我的回答中,自我修复功能将适用于多列,也接受的答案是使用最耗时apply,不推荐,检查更多信息我应该什么时候想要在我的代码中使用pandas apply()?)

python dataframe pandas

76
推荐指数
5
解决办法
1万
查看次数

Python数据框包含列表的单独单元格值

我有一个数据框df

        0               1               2   
Mon ['x','y','z']   ['a','b','c']   ['a','b','c']
Tue ['a','b','c']   ['a','b','c']   ['x','y','z']
Wed ['a','b','c']   ['a','b','c']   ['a','b','c']
Run Code Online (Sandbox Code Playgroud)

列表彼此之间都有差异(也许也相似),我希望将其转换为以下形式:

    0 1 2
Mon x a a
Mon y b b
Mon z c c
Tue a a x
Tue b b y
Tue c c z
Wed a a a
Wed b b b
Wed c c c
Run Code Online (Sandbox Code Playgroud)

参考之前的一些SO问题,Explode在Pandas中列出不同长度的列表将pandas数据帧字符串条目分割(爆炸)到单独的行

我尝试使用他们的解决方案,但无法获得所需的输出。我怎样才能实现这个目标?

s1 = df[0]
s2 = df[1]
s3 = df[2]
i1 = np.arange(len(df)).repeat(s1.str.len())
i2 = np.arange(len(df)).repeat(s2.str.len())
i3 = …
Run Code Online (Sandbox Code Playgroud)

python numpy dataframe python-2.7 pandas

5
推荐指数
1
解决办法
133
查看次数

如何将列中的列表转换为垂直形状?

我的pandas数据框中的一列包含一个列表.我想扩展它并转换如下的垂直形状.怎么做?

前(代码):

import pandas as pd
pd.DataFrame({
    'col1':['fruit', 'veicle', 'animal'],
    'col2':['apple', 'bycicle', 'cat'],
    'col3':[1,4,2],
    'list':[
        [10, 20],
        [1.2, 3.0, 2.75],
        ['tommy', 'tom']
    ]
})
Run Code Online (Sandbox Code Playgroud)

前(表):

    |col1  |col2   |col3|list            |
    |------|-------|----|----------------|
    |fruit |apple  |   1|[10, 20]        |
    |veicle|bicycle|   4|[1.2, 3.0, 2.75]|
    |animal|cat    |   2|['tommy', 'tom']|
Run Code Online (Sandbox Code Playgroud)

    |col1  |col2   |col3|list   |
    |------|-------|----|-------|
    |fruit |apple  |   1|10     |
    |fruit |apple  |   1|20     |
    |viecle|bycicle|   4|1.2    |
    |viecle|bycicle|   4|3.0    |
    |viecle|bycicle|   4|2.75   |
    |animal|cat    |   2|'tommy'|
    |animal|cat    |   2|'tom   |
Run Code Online (Sandbox Code Playgroud)

注1:列表的长度和类型不同.

注2:我可以修改代码生成datafarme. …

python reshape dataframe pandas

2
推荐指数
1
解决办法
516
查看次数

Pandas:将包含 dict 值列表的列解压为多列

我有一个看起来像这样的 df

            COL1   COL2    COL3                             
0         ABC      N       [{u'PERF_PCT': 0.2,u'PERF_DATE': 12},{u'PERF_PCT': 0.3,u'PERF_DATE': 13}]
1         XYZ      N       [{u'PERF_PCT': 0.6,u'PERF_DATE': 12},{u'PERF_PCT': 0.2,u'PERF_DATE': 13},{u'PERF_PCT': 0.7,u'PERF_DATE': 14}] 
Run Code Online (Sandbox Code Playgroud)

我需要解压缩第 3 列,以便数据框为 COL3 中的列表中的每个字典都有额外的行,并为字典中的每个键提供额外的列。dict 中的键值对是固定的。

          COL1    COL2     PERF_PCT       PERF_DATE              
0         ABC      N       0.2            12
1         ABC      N       0.3            13
2         XYZ      N       0.6            12 
3         XYZ      N       0.2            13
4         XYZ      N       0.7            14 
Run Code Online (Sandbox Code Playgroud)

我已经能够使用 for 循环完成相同的任务,但我需要一些非常高性能的东西。结果 df 可以有大约 170k 条记录,目前使用 for 循环需要大约 20+ 秒,这是不可接受的。我希望使用 pandas 特定的 apply 或其他功能可以使这更快,但未能这样做。如果有一种非常快速的方法可以做到这一点,我将不胜感激。谢谢。

python apply pandas

1
推荐指数
1
解决办法
3044
查看次数

标签 统计

pandas ×4

python ×4

dataframe ×3

apply ×1

numpy ×1

python-2.7 ×1

reshape ×1