我有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,然后重新索引(我的实际代码甚至更麻烦,因为列列表不是那么容易获取).我很确定必须有一些ix或xs这样做,但我尝试的一切都导致了错误.
我有一个系列,像这样:
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字符串是否以特定子字符串结尾,比如说".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
我按 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) 当我尝试比较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年但是无法解释这个案例.
我正在通过' 使用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) 我有一个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) 考虑
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) 我有一个问题,我在网络或文档中找不到任何解决方案,即使我认为这是非常微不足道的.
我想做什么?
我有这样的数据帧
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值的无格式输出
我有一点
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 ×9
pandas ×7
dataframe ×2
group-by ×2
equals ×1
hierarchical ×1
java ×1
list ×1
long-integer ×1
matplotlib ×1
multi-index ×1
numpy ×1
seaborn ×1
string ×1
typechecking ×1