我有以下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()?)
我有一个数据框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) 我的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. …
我有一个看起来像这样的 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 或其他功能可以使这更快,但未能这样做。如果有一种非常快速的方法可以做到这一点,我将不胜感激。谢谢。