小编cs9*_*s95的帖子

从pandas MultiIndex中选择列

我有DataFrame和MultiIndex列,如下所示:

# sample data
col = pd.MultiIndex.from_arrays([['one', 'one', 'one', 'two', 'two', 'two'],
                                ['a', 'b', 'c', 'a', 'b', 'c']])
data = pd.DataFrame(np.random.randn(4, 6), columns=col)
data
Run Code Online (Sandbox Code Playgroud)

样本数据

['a', 'c']从第二级别仅选择特定列(例如,不是范围)的正确,简单方法是什么?

目前我这样做:

import itertools
tuples = [i for i in itertools.product(['one', 'two'], ['a', 'c'])]
new_index = pd.MultiIndex.from_tuples(tuples)
print(new_index)
data.reindex_axis(new_index, axis=1)
Run Code Online (Sandbox Code Playgroud)

预期结果

然而,它不是一个好的解决方案,因为我必须淘汰itertools,手工构建另一个MultiIndex,然后重新索引(我的实际代码甚至更麻烦,因为列列表不是那么容易获取).我很确定必须有一些ixxs这样做,但我尝试的一切都导致了错误.

python hierarchical multi-index pandas

19
推荐指数
6
解决办法
1万
查看次数

pandas Series to Dataframe,使用Series的索引作为列

我有一个系列,像这样:

series = pd.Series({'a': 1, 'b': 2, 'c': 3})
Run Code Online (Sandbox Code Playgroud)

我想将它转换为这样的数据帧:

    a   b   c
0   1   2   3
Run Code Online (Sandbox Code Playgroud)

pd.Series.to_frame 不起作用,结果像,

    0
a   1
b   2
c   3
Run Code Online (Sandbox Code Playgroud)

如何从Series构建DataFrame,其中Series的索引为列?

python pandas

19
推荐指数
4
解决办法
2万
查看次数

检测python字符串的开头

要检测python字符串是否以特定子字符串结尾,比如说".txt",有一个方便的内置python字符串方法;

 if file_string.endswith(".txt"):
Run Code Online (Sandbox Code Playgroud)

我想检测一个python字符串是否以特定的子字符串开头"begin_like_this".我找不到一个方便的方法,我可以像这样使用;

 if file_string.beginswith("begin_like_this"):
Run Code Online (Sandbox Code Playgroud)

我使用的是python v3.6

python string

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

Pandas GroupBy 并选择特定列中具有最小值的行

我按 A 列对我的数据集进行分组,然后想取 B 列中的最小值和 C 列中的相应值。

data = pd.DataFrame({'A': [1, 2], 'B':[ 2, 4], 'C':[10, 4]})
data  
    A   B   C
0   1   4   3
1   1   5   4
2   1   2   10
3   2   7   2
4   2   4   4
5   2   6   6  
Run Code Online (Sandbox Code Playgroud)

我想得到:

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

目前我按 A 分组,并创建一个值来指示我将保留在我的数据集中的行:

a = data.groupby('A').min()
a['A'] = a.index
to_keep = [str(x[0]) + str(x[1]) for x in a[['A', 'B']].values]
data['id'] = data['A'].astype(str) + …
Run Code Online (Sandbox Code Playgroud)

python group-by pandas pandas-groupby

19
推荐指数
4
解决办法
1万
查看次数

什么不是2长变量等于==运算符在Java中进行比较?

当我尝试比较2个Long变量时,我遇到了一个非常奇怪的问题,它们总是显示为false,我可以通过Eclipse中的调试确定它们具有相同的数值:

if (user.getId() == admin.getId()) {
    return true; // Always enter here
} else {
    return false;
}
Run Code Online (Sandbox Code Playgroud)

以上两个返回值都是对象类型的Long,这让我很困惑.并验证我写了一个这样的主方法:

Long id1 = 123L;
Long id2 = 123L;

System.out.println(id1 == id2);
Run Code Online (Sandbox Code Playgroud)

它打印真实.

有人可以给我一些想法吗?我已经在Java Development工作了3年但是无法解释这个案例.

java equals long-integer

18
推荐指数
2
解决办法
2万
查看次数

用逗号连接单词,和"和"

我正在通过' 使用Python自动化无聊的东西 '.我无法弄清楚如何从下面的程序中删除最终输出逗号.目标是不断提示用户输入值,然后在列表中打印出来,并在结束前插入"和".输出应该如下所示:

apples, bananas, tofu, and cats
Run Code Online (Sandbox Code Playgroud)

我看起来像这样:

apples, bananas, tofu, and cats,
Run Code Online (Sandbox Code Playgroud)

最后一个逗号正在推动我努力.

def lister():
    listed = []
    while True:
        print('type what you want to be listed or type nothing to exit')
        inputted = input()
        if inputted == '':
            break
        else:
            listed.append(inputted+',')
    listed.insert(-1, 'and')
    for i in listed:
        print(i, end=' ')
lister()
Run Code Online (Sandbox Code Playgroud)

python list

18
推荐指数
3
解决办法
3890
查看次数

如何使用seaborn为我的DataFrame创建堆积条形图?

我有一个DataFrame df:

df = pd.DataFrame(columns=["App","Feature1", "Feature2","Feature3",
                           "Feature4","Feature5",
                           "Feature6","Feature7","Feature8"], 
                  data=[["SHA",0,0,1,1,1,0,1,0],
                        ["LHA",1,0,1,1,0,1,1,0],
                        ["DRA",0,0,0,0,0,0,1,0],
                        ["FRA",1,0,1,1,1,0,1,1],
                        ["BRU",0,0,1,0,1,0,0,0],
                        ["PAR",0,1,1,1,1,0,1,0],
                        ["AER",0,0,1,1,0,1,1,0],
                        ["SHE",0,0,0,1,0,0,1,0]])
Run Code Online (Sandbox Code Playgroud)

我想创建一个堆积条形图,以便每个堆栈对应于AppY轴将包含1值的计数和X轴Feature.

它应该类似于这个条形图,唯一的区别是现在我想看到堆栈条和带颜色的图例:

df_c = df.iloc[:, 1:].eq(1).sum().rename_axis('Feature').reset_index(name='Cou??nt')
df_c = df_c.sort_values('Count')

plt.figure(figsize=(12,8))
ax = sns.barplot(x="Feature", y="Count", data=df_c, palette=sns.color_palette("GnBu", 10))
plt.xticks(rotation='vertical')
ax.grid(b=True, which='major', color='#d3d3d3', linewidth=1.0)
ax.grid(b=True, which='minor', color='#d3d3d3', linewidth=0.5)
plt.show()
Run Code Online (Sandbox Code Playgroud)

python matplotlib pandas seaborn

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

有没有一种有效的方法来检查列是否有混合dtypes?

考虑

np.random.seed(0)
s1 = pd.Series([1, 2, 'a', 'b', [1, 2, 3]])
s2 = np.random.randn(len(s1))
s3 = np.random.choice(list('abcd'), len(s1))


df = pd.DataFrame({'A': s1, 'B': s2, 'C': s3})
df
           A         B  C
0          1  1.764052  a
1          2  0.400157  d
2          a  0.978738  c
3          b  2.240893  a
4  [1, 2, 3]  1.867558  a
Run Code Online (Sandbox Code Playgroud)

列"A"具有混合数据类型.我想提出一个非常快速的方法来确定这一点.它不会像检查是否那样简单type == object,因为那会将"C"识别为误报.

我可以想到这样做

df.applymap(type).nunique() > 1

A     True
B    False
C    False
dtype: bool
Run Code Online (Sandbox Code Playgroud)

但是调用typeatop applymap非常慢.尤其适用于较大的框架

%timeit df.applymap(type).nunique() > 1
3.95 ms …
Run Code Online (Sandbox Code Playgroud)

python numpy typechecking dataframe pandas

18
推荐指数
2
解决办法
533
查看次数

Groupby类并计算要素中的缺失值

我有一个问题,我在网络或文档中找不到任何解决方案,即使我认为这是非常微不足道的.

我想做什么?

我有这样的数据帧

CLASS FEATURE1 FEATURE2 FEATURE3
  X      A       NaN      NaN
  X     NaN       A       NaN
  B      A        A        A
Run Code Online (Sandbox Code Playgroud)

我想按标签分组(CLASS)并显示每个功能中计算的NaN值的数量,使其看起来像这样.这样做的目的是大致了解缺失值如何分布在不同的类上.

CLASS FEATURE1 FEATURE2 FEATURE3
  X      1        1        2
  B      0        0        0
Run Code Online (Sandbox Code Playgroud)

我知道如何收到空的数量- 价值 -df.groupby['CLASS'].count()

NaN -Values 有类似的东西吗?

我试图从size()中减去count(),但它返回了一个填充了NaN值的无格式输出

python group-by dataframe pandas pandas-groupby

18
推荐指数
3
解决办法
2874
查看次数

如何有效地从单个点计算熊猫数据框中每一行的距离?

我有一点

point = np.array([0.07852388, 0.60007135, 0.92925712, 0.62700219, 0.16943809,
       0.34235233])
Run Code Online (Sandbox Code Playgroud)

还有一个熊猫数据框

           a           b           c           d           e           f
0   0.025641    0.554686    0.988809    0.176905    0.050028    0.333333
1   0.027151    0.520914    0.985590    0.409572    0.163980    0.424242
2   0.028788    0.478810    0.970480    0.288557    0.095053    0.939394
3   0.018692    0.450573    0.985910    0.178048    0.118399    0.484848
4   0.023256    0.787253    0.865287    0.217591    0.205670    0.303030
Run Code Online (Sandbox Code Playgroud)

我想计算熊猫数据框中每一行到那个特定点的距离

我试过

import numpy as np
d_all = list()
for index, row in df_scaled[cols_list].iterrows():
        d = np.linalg.norm(centroid-np.array(list(row[cols_list])))
        d_all += [d]
df_scaled['distance_cluster'] = d_all
Run Code Online (Sandbox Code Playgroud)

不过,我的解决方案真的很慢(考虑到我也想计算与其他点的距离。

有没有办法更有效地进行计算?

python pandas

18
推荐指数
2
解决办法
836
查看次数