我有以下DataFrame(df):
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.rand(10, 5))
Run Code Online (Sandbox Code Playgroud)
我通过赋值添加更多列:
df['mean'] = df.mean(1)
Run Code Online (Sandbox Code Playgroud)
如何将列移动mean到前面,即将其设置为第一列,使其他列的顺序保持不变?
我有一个数据框,其中一些单元格包含多个值的列表.我不想在单元格中存储多个值,而是扩展数据框,以便列表中的每个项目都有自己的行(在所有其他列中具有相同的值).所以,如果我有:
import pandas as pd
import numpy as np
df = pd.DataFrame(
{'trial_num': [1, 2, 3, 1, 2, 3],
'subject': [1, 1, 1, 2, 2, 2],
'samples': [list(np.random.randn(3).round(2)) for i in range(6)]
}
)
df
Out[10]:
samples subject trial_num
0 [0.57, -0.83, 1.44] 1 1
1 [-0.01, 1.13, 0.36] 1 2
2 [1.18, -1.46, -0.94] 1 3
3 [-0.08, -4.22, -2.05] 2 1
4 [0.72, 0.79, 0.53] 2 2
5 [0.4, -0.32, -0.13] 2 3
Run Code Online (Sandbox Code Playgroud)
如何转换为长格式,例如:
subject trial_num sample sample_num …Run Code Online (Sandbox Code Playgroud) 我正在使用大型csv文件,最后一列的下一行有一个文本字符串,我希望通过特定的分隔符进行拆分.我想知道是否有一种简单的方法可以使用pandas或python来做到这一点?
CustNum CustomerName ItemQty Item Seatblocks ItemExt
32363 McCartney, Paul 3 F04 2:218:10:4,6 60
31316 Lennon, John 25 F01 1:13:36:1,12 1:13:37:1,13 300
Run Code Online (Sandbox Code Playgroud)
我想的空间分割(' '),然后结肠(':')在Seatblocks列,但每个单元格将导致不同的列数.我有一个重新排列列的功能,所以Seatblocks列位于工作表的末尾,但我不知道该怎么做.我可以使用内置text-to-columns函数和快速宏在excel中完成它,但我的数据集有太多的记录供excel处理.
最终,我想记录约翰列侬的记录并创建多条线,每组座位的信息都在一条单独的线上.
嗨我有这样的数据帧:
A B
0: some value [[L1, L2]]
Run Code Online (Sandbox Code Playgroud)
我想把它改成:
A B
0: some value L1
1: some value L2
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我有一个包含订单数据的数据框,每个订单都有多个包存储为逗号分隔的字符串[ package&package_code]列
我想分割包数据并为每个包创建一行,包括其订单详细信息
以下是输入数据框的示例:
import pandas as pd
df = pd.DataFrame({"order_id":[1,3,7],"order_date":["20/5/2018","22/5/2018","23/5/2018"], "package":["p1,p2,p3","p4","p5,p6"],"package_code":["#111,#222,#333","#444","#555,#666"]})
Run Code Online (Sandbox Code Playgroud)
我怎么能用熊猫做到这一点?
假设我有以下Pandas Dataframe:
df = pd.DataFrame({"a" : [1,2,3], "b" : [[1,2],[2,3,4],[5]]})
a b
0 1 [1, 2]
1 2 [2, 3, 4]
2 3 [5]
Run Code Online (Sandbox Code Playgroud)
我如何"取消堆叠""b"列中的列表以将其转换为数据帧:
a b
0 1 1
1 1 2
2 2 2
3 2 3
4 2 4
5 3 5
Run Code Online (Sandbox Code Playgroud) 此问题类似于拆分(爆炸)pandas数据帧字符串条目到单独的行,但包括有关添加范围的问题.
我有一个DataFrame:
+------+---------+----------------+
| Name | Options | Email |
+------+---------+----------------+
| Bob | 1,2,4-6 | bob@email.com |
+------+---------+----------------+
| John | NaN | john@email.com |
+------+---------+----------------+
| Mary | 1,2 | mary@email.com |
+------+---------+----------------+
| Jane | 1,3-5 | jane@email.com |
+------+---------+----------------+
Run Code Online (Sandbox Code Playgroud)
我希望Options用逗号分隔列以及为范围添加的行.
+------+---------+----------------+
| Name | Options | Email |
+------+---------+----------------+
| Bob | 1 | bob@email.com |
+------+---------+----------------+
| Bob | 2 | bob@email.com |
+------+---------+----------------+
| Bob | 4 | bob@email.com | …Run Code Online (Sandbox Code Playgroud) 我有一个熊猫数据框:
df = pd.DataFrame({'col1': ['3 a, 3 ab, 1 b',
'4 a, 4 ab, 1 b, 1 d',
np.nan] })
Run Code Online (Sandbox Code Playgroud)
和一本字典
di = {'a': 10.0,
'ab': 2.0,
'b': 1.5,
'd': 1.0,
np.nan: 0.0}
Run Code Online (Sandbox Code Playgroud)
使用字典中的值,我想像这样评估数据框行:
3 * 10.0 + 3 * 2.0 + 1 * 1.5给我最终的输出看起来像这样:
pd.DataFrame({'col1': ['3 a, 3 ab, 1 b',
'4 a, 4 ab, 1 b, 1 d',
'np.nan'], 'result': [37.5,
50.5,
0] })
Run Code Online (Sandbox Code Playgroud)
因此,到目前为止,我只能将“,”替换为“ +”
df['col1'].str.replace(',',' +').str.split(' ')
Run Code Online (Sandbox Code Playgroud) 注意:这个问题的确是一个重复的分离pandas数据帧字符串条目到单独的行,但这里提供的答案更通用和信息丰富,所以在所有方面到期,我选择不删除线程
我有一个'数据集',格式如下:
id | value | ...
--------|-------|------
a | 156 | ...
b,c | 457 | ...
e,g,f,h | 346 | ...
... | ... | ...
Run Code Online (Sandbox Code Playgroud)
我想通过复制每个ID的所有值来规范化它:
id | value | ...
--------|-------|------
a | 156 | ...
b | 457 | ...
c | 457 | ...
e | 346 | ...
g | 346 | ...
f | 346 | ...
h | 346 | ...
... | ... | ...
Run Code Online (Sandbox Code Playgroud)
我正在做的是应用split-apply-combine pandas使用原则,为每个组 …
我有一个数据框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)