小编Daw*_*wei的帖子

有没有一种优雅的方法只能保持矩阵中每行的最高[2~3]值?

在问题的最后更新了一种更简单的方法.

是)我有的

我有一个用户 - 用户相关矩阵matrixcorr_of_user,如下所示:

userId       316       320       359       370       910
userId                                                  
316     1.000000  0.202133  0.208618  0.176050  0.174035
320     0.202133  1.000000  0.242837  0.019035  0.031737
359     0.208618  0.242837  1.000000  0.357620  0.175914
370     0.176050  0.019035  0.357620  1.000000  0.317371
910     0.174035  0.031737  0.175914  0.317371  1.000000
Run Code Online (Sandbox Code Playgroud)

我想要的是

对于每个用户,我只想保留与他最相似的其他 2 用户(排除对角线元素后每行的最高相关值).像这样:

Out[40]: 
userId          316       320       359       370       910
corr_user                                                  
316             NaN  0.202133  0.208618       NaN       NaN
320        0.202133       NaN  0.242837       NaN       NaN
359             NaN  0.242837       NaN  0.357620       NaN …
Run Code Online (Sandbox Code Playgroud)

python sorting dataframe pandas

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

如何计算熊猫中最长的不间断序列

让我们说我pd.Series喜欢下面的内容

s = pd.Series([False, True, False,True,True,True,False, False])    

0    False
1     True
2    False
3     True
4     True
5     True
6    False
7    False
dtype: bool
Run Code Online (Sandbox Code Playgroud)

我想知道最长的True序列有多长,在这个例子中,它是3.

我以一种愚蠢的方式尝试过它.

s_list = s.tolist()
count = 0
max_count = 0
for item in s_list:
    if item:
        count +=1
    else:
        if count>max_count:
            max_count = count
        count = 0
print(max_count)
Run Code Online (Sandbox Code Playgroud)

它会打印3,但最重要的SeriesTrue,它会打印出来0

python pandas

5
推荐指数
2
解决办法
961
查看次数

从不同的大文件中打乱数据的有效方法

举例来说,我已经是df1并且df2在不同的领域:

df1 = pd.DataFrame({"question":["q1","q2"], "answer":["a1","a2"], "domain":"tech"})
df2 = pd.DataFrame({"question":["q3","q4"], "answer":["a3","a4"], "domain":"history"})

print(df1)
  question answer domain
0       q1     a1   tech
1       q2     a2   tech

print(df2)
  question answer   domain
0       q3     a3  history
1       q4     a4  history
Run Code Online (Sandbox Code Playgroud)

我想要的是混洗后的数据:

print(shuffled1)
  question answer   domain
0       q3     a3  history
1       q1     a1     tech
print(shuffled2)
  question answer   domain
0       q2     a2     tech
1       q4     a4  history
Run Code Online (Sandbox Code Playgroud)

在现实世界中,我有来自不同域的 60 多个具有相同结构的 csv 文件。每个文件有 50k 条记录。它们不能同时读入内存。

我想要做的是将这些文件输入到 Bert 模型中进行训练,但是如果模型从“历史”域中学习 10k 步的数据,然后从另外 10k 步的“技术”域中学习,则该模型会做得不好。所以我想打乱文件中的数据,使多个域的数据均匀分布在每个文件中。

python dataframe pandas

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

如何选择行并替换pandas中的一些列

import pandas as pd
dic = {'A': [np.nan, 4, np.nan, 4], 'B': [9, 2, 5, 3], 'C': [0, 0, 5, 3]}
df = pd.DataFrame(dic)
df 
Run Code Online (Sandbox Code Playgroud)

如果我有如下数据

     A  B   C
0   NaN 9   0
1   4.0 2   0
2   NaN 5   5
3   4.0 3   3
Run Code Online (Sandbox Code Playgroud)

我想选择A列的原始NaN值,并用np.nan替换B列的值,如下所示.

    A   B   C
0   NaN NaN 0
1   4.0 2.0 0
2   NaN NaN 5
3   4.0 3.0 3
Run Code Online (Sandbox Code Playgroud)

我试过df[df.A.isna()]["B"]=np.nan,但它没有用.
根据这个页面,我应该选择数据df.iloc.但问题是如果df有很多行,我就无法通过输入索引选择数据.

python pandas

4
推荐指数
3
解决办法
62
查看次数

如何对pandas.DataFrame中的每一行分别进行排名

是)我有的

用户-用户相似度矩阵,其中某些行具有重复的值,并且 NaN

userId  316       320       359       370       910
userId                                             
316     1.0  0.500000  0.500000  0.500000       NaN
320     0.5  1.000000  0.242837  0.019035  0.031737
359     0.5  0.242837  1.000000  0.357620  0.175914
370     0.5  0.019035  0.357620  1.000000  0.317371
910     NaN  0.031737  0.175914  0.317371  1.000000
Run Code Online (Sandbox Code Playgroud)

我想要的是

我想对每行的相似性分别进行排名。像这样:

userId  316  320  359  370  910
userId                         
316       1    2    3    4   NaN
320       2    1    3    5    1
359       2    4    1    3    5
370       2    5    3    1    4
910      NaN   4    3    2    1
Run Code Online (Sandbox Code Playgroud)

相同值之间的等级并不重要。但这必须是一个独特的价值。并且 …

python data-mining pandas

3
推荐指数
1
解决办法
1366
查看次数

标签 统计

pandas ×5

python ×5

dataframe ×2

data-mining ×1

sorting ×1