我不得不这样做几次,我总是感到沮丧.我有一个数据帧:
df = pd.DataFrame([[1, 2, 3, 4], [5, 6, 7, 8]], ['a', 'b'], ['A', 'B', 'C', 'D'])
print df
A B C D
a 1 2 3 4
b 5 6 7 8
Run Code Online (Sandbox Code Playgroud)
我想df变成:
pd.Series([[1, 2, 3, 4], [5, 6, 7, 8]], ['a', 'b'])
a [1, 2, 3, 4]
b [5, 6, 7, 8]
dtype: object
Run Code Online (Sandbox Code Playgroud)
我试过了
df.apply(list, axis=1)
Run Code Online (Sandbox Code Playgroud)
哪个让我回来了 df
这样做的方便/有效方法是什么?
我有一个数据帧
df = pd.DataFrame([
['2', '3', 'nan'],
['0', '1', '4'],
['5', 'nan', '7']
])
print df
0 1 2
0 2 3 nan
1 0 1 4
2 5 nan 7
Run Code Online (Sandbox Code Playgroud)
我想将这些字符串转换为数字并对列求和并转换回字符串.
使用astype(float)似乎让我到数字部分.然后总结很简单sum().然后回到字符串也应该很容易astype(str)
df.astype(float).sum().astype(str)
0 7.0
1 4.0
2 11.0
dtype: object
Run Code Online (Sandbox Code Playgroud)
这几乎就是我想要的.我想要整数的字符串版本.但浮点数有小数.我怎么摆脱他们?
我要这个
0 7
1 4
2 11
dtype: object
Run Code Online (Sandbox Code Playgroud) 我有一个数据帧 df
df = pd.DataFrame(np.arange(20).reshape(10, -1),
[['a', 'a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd'],
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']],
['X', 'Y'])
Run Code Online (Sandbox Code Playgroud)
如何获取按索引第一级分组的第一行和最后一行?
我试过了
df.groupby(level=0).agg(['first', 'last']).stack()
Run Code Online (Sandbox Code Playgroud)
得到了
X Y
a first 0 1
last 6 7
b first 8 9
last 12 13
c first 14 15
last 16 17
d first 18 19
last 18 19
Run Code Online (Sandbox Code Playgroud)
这非常接近我想要的.如何保留1级索引并改为:
X Y
a a 0 1
d 6 7
b e 8 9
g 12 13 …Run Code Online (Sandbox Code Playgroud) pandas允许对时间索引进行冷切片.例如,我可以df通过以下方式切割2012年1月至2012年3月的数据帧:
df['2012-01':'2012-03']
Run Code Online (Sandbox Code Playgroud)
但是,我有一个df带有multiindex 的数据帧,其中时间索引是第二级.看起来像:
A B C D E
a 2001-01-31 0.864841 0.789273 0.370031 0.448256 0.178515
2001-02-28 0.991861 0.079215 0.900788 0.666178 0.693887
2001-03-31 0.016674 0.855109 0.984115 0.436574 0.480339
2001-04-30 0.120924 0.046013 0.659807 0.210534 0.694029
2001-05-31 0.788149 0.296244 0.478201 0.845042 0.437814
b 2001-01-31 0.497646 0.349958 0.223227 0.812331 0.975012
2001-02-28 0.542572 0.472267 0.276186 0.970909 0.138683
2001-03-31 0.960813 0.666942 0.069349 0.282741 0.127992
2001-04-30 0.491422 0.678742 0.048784 0.612312 0.713472
2001-05-31 0.718721 0.504403 0.069047 0.253682 0.836386
Run Code Online (Sandbox Code Playgroud)
我仍然可以通过以下方式在任何特定级别使用上述方法切片:
df.loc['a']['2012-01':'2012-03']
Run Code Online (Sandbox Code Playgroud)
但这只是为了level0 == …
我正在使用熊猫系列,我想找到代表分位数的索引值。
如果我有:
np.random.seed(8)
s = pd.Series(np.random.rand(6), ['a', 'b', 'c', 'd', 'e', 'f'])
s
a 0.873429
b 0.968541
c 0.869195
d 0.530856
e 0.232728
f 0.011399
dtype: float64
Run Code Online (Sandbox Code Playgroud)
并且做
s.quantile(.5)
Run Code Online (Sandbox Code Playgroud)
我得到
0.70002511588475946
Run Code Online (Sandbox Code Playgroud)
我想知道的是s代表该分位数值之前的点的索引值是多少。在这种情况下,我知道索引值应该是d.
我正在阅读这个问题的答案。然后出现了如何计算一个数据帧中所有列与另一数据帧中所有列的相关性的问题。因为这个问题似乎不会得到回答,所以我想问它,因为我需要类似的东西。
假设我有数据框A并且B:
import pandas as pd
import numpy as np
A = pd.DataFrame(np.random.rand(24, 5), columns=list('abcde'))
B = pd.DataFrame(np.random.rand(24, 5), columns=list('ABCDE'))
Run Code Online (Sandbox Code Playgroud)
如何获得如下所示的数据框:
pd.DataFrame([], A.columns, B.columns)
A B C D E
a NaN NaN NaN NaN NaN
b NaN NaN NaN NaN NaN
c NaN NaN NaN NaN NaN
d NaN NaN NaN NaN NaN
e NaN NaN NaN NaN NaN
Run Code Online (Sandbox Code Playgroud)
但充满了适当的相关性?
这是获取 groupby 中的第一个和最后一个值的后续问题
如何删除每个组中的第一行和最后一行?
我有这个 df
df = pd.DataFrame(np.arange(20).reshape(10, -1),
[['a', 'a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd'],
['a', 'a', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']],
['X', 'Y'])
df
Run Code Online (Sandbox Code Playgroud)
我故意使第二行与第一行具有相同的索引值。我无法控制索引的唯一性。
X Y
a a 0 1
a 2 3
c 4 5
d 6 7
b e 8 9
f 10 11
g 12 13
c h 14 15
i 16 17
d j 18 19
Run Code Online (Sandbox Code Playgroud)
我要这个
X Y
a b 2.0 3
c …Run Code Online (Sandbox Code Playgroud) 我有这个 df
df = pd.DataFrame(dict(
A=['b', 'a', 'b', 'c', 'a', 'c', 'a', 'c', 'a', 'a'],
B=[[0, 2, 3, 1],
[9, 6, 7, 2],
[6, 0, 1, 4],
[9, 2, 5, 1],
[5, 1, 4, 8],
[8, 5, 6, 6],
[0, 9, 0, 0],
[2, 6, 1, 8],
[7, 3, 2, 6],
[8, 7, 1, 9]]
))
Run Code Online (Sandbox Code Playgroud)
我想分组'A'并联合所有列表'B'
既不工作df.groupby('A').B.union()也不df.groupby('A').B.apply(set.union)工作.
我想要结果
A
a {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
b {0, …Run Code Online (Sandbox Code Playgroud) 假设我有一个数据帧 df
df = pd.DataFrame([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]],
columns=['A', 'B', 'C', 'D', 'E'])
Run Code Online (Sandbox Code Playgroud)
看起来像这样
A B C D E
0 1 2 3 4 5
1 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)
如何反转列值的顺序,但将列标题保留为A,B,C,D,E?
我希望它看起来像
A B C D E
0 5 4 3 2 1
1 10 9 8 7 6
Run Code Online (Sandbox Code Playgroud)
我已经尝试对列索引进行排序,df.sort_index(1, ascending=False)但这会改变列标题(显然),而且,我不知道我的列是否以有序的方式开始.
什么是模拟随机回报的快捷方法.我知道numpy.random.但是,这并没有指导我如何模拟资产回报.
我试过了:
import numpy as np
r = np.random.rand(100)
Run Code Online (Sandbox Code Playgroud)
但这并不准确.其他人如何处理此事?