小编use*_*057的帖子

在Jupyter笔记本熊猫中的For循环中打印视觉上令人愉悦的DataFrames

假设我在列表中有这两个数据框,

sm = pd.DataFrame([["Forever", 'BenHarper'],["Steel My Kisses", 'Kack Johnson'],\
                  ["Diamond On the Inside",'Xavier Rudd'],[ "Count On Me", "Bruno Mars"]],\
                   columns=["Song", "Artist"])

pm = pd.DataFrame([["I am yours", 'Jack Johnson'],["Chasing Cars", 'Snow Patrol'],\
                  ["Kingdom Comes",'Cold Play'],[ "Time of your life", "GreenDay"]],\
                   columns=["Song", "Artist"])

df_list = [sm,pm]
Run Code Online (Sandbox Code Playgroud)

现在,当我要在迭代时同时打印两个数据帧时,会得到类似的内容,

for i in df_list:
    print(i)
Run Code Online (Sandbox Code Playgroud)

结果,

                  Song        Artist
0                Forever     BenHarper
1        Steel My Kisses  Kack Johnson
2  Diamond On the Inside   Xavier Rudd
3            Count On Me    Bruno Mars
                Song        Artist
0         I am …
Run Code Online (Sandbox Code Playgroud)

python dataframe python-3.x jupyter-notebook

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

“XGBModel”对象“enable_categorical”-属性错误

我使用 Xgboost 1.4.2 版本构建了 XGBClassifier 模型,并以 pickle 格式保存在 S3 中。

from xgboost import XGBClassifier

xgb_model = XGBClassifier()

xgb_model.fit(x_Traintfidf, y_Train)

xgb_predictions = xgb_model.predict(x_Testtfidf) 

xgb_predictions = [round(value) for value in xgb_predictions]

from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_Test.to_list(), xgb_predictions) 
print("Accuracy: %.2f%%" % (accuracy * 100.0))

# Save model to s3 as pickle file.
Run Code Online (Sandbox Code Playgroud)

接下来,我读回 s3 中的 pickled 模型,当我尝试进行预测时,它会抛出错误:

AttributeError:“XGBModel”对象没有属性“enable_categorical”

我有一个tf-idf变换后的矩阵,我正在传递以获得预测。

知道为什么当我取消模型并进行预测时会出现上述错误吗?

python pickle xgboost

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

获取列表列表,迭代列表列表

我有一个像这样的列表,

big_list = [[1,3,5], [1,2,5], [9,3,5]]

sec_list = [1,3,5]
Run Code Online (Sandbox Code Playgroud)

我想迭代big_list并检查每个列表值sec_list.当我检查时,我想将不匹配的值存储到另一个列表列表中.所以,我这样做了:

sma_list = []
for each in big_list:
    for i,j in zip(each, sec_list):
        if i!=j:
            sma_list.append(i)
Run Code Online (Sandbox Code Playgroud)

我得到这样的结果:

[2, 9]
Run Code Online (Sandbox Code Playgroud)

但是,我需要一个像这样的列表,

[[2], [9]]
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

python list python-3.x

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

合并 pandas 中的奇数和偶数索引行

我有一个df这样的数据框,

   Name     Net        Quantity  
0  Auto     1010       10
1  NaN      NaN        12
2  Rtal     4145       18
3  NaN      NaN        14
4  Indl     6223       16
5  NaN      7222       18
Run Code Online (Sandbox Code Playgroud)

我的输出数据框应该是这样的,

       Name     Net         Quantity  
    0  Auto     1010        10,12
    1  Rtal     4145        18,14
    2  Indl     6223,7222   16,18
Run Code Online (Sandbox Code Playgroud)

正如您从上面的数据框中看到的,如果奇数(索引)中存在任何值,我想将值与偶数(索引)行组合,以便我可以获得输出。

我尝试了以下方法来提取奇数值,

df.iloc[1::2, :]
Run Code Online (Sandbox Code Playgroud)

这给了我以下内容,

    Name    Net   Quantity
1   NaN     NaN       12
3   NaN     NaN       14
5   NaN     7222.0    18
Run Code Online (Sandbox Code Playgroud)

之后,我现在不知道如何将这些值添加到我的df. 除此之外,我不确定我的方法是否正确。如果有人可以提供建议/帮助,我将不胜感激。

python dataframe python-3.x pandas pandas-groupby

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

从一组选定的行中获取NaN值的索引

我有一个这样的数据框,

    ID   Cus_ID cl_id
0   5.0  200    0
1   NaN  200    0
2   NaN  200    1
3   14.0 200    2
4   15.0 200    2
5   16.0 200    2
6   NaN  200    3
Run Code Online (Sandbox Code Playgroud)

从上面的数据框中,我想提取第0至4行,并检查“ ID”列中是否有任何NaN值。我试过了

rows_needed = [0,1,2,3,4]

df.iloc[rows_needed,0].isnull().index.tolist()
Run Code Online (Sandbox Code Playgroud)

但是我得到以下内容

[0, 1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

我期望得到的索引[1,2]。如何获得所需的输出?

当我这样做时

df.iloc[rows_needed,0].isnull()
Run Code Online (Sandbox Code Playgroud)

我明白了

0    False
1     True
2     True
3    False
4    False
Name: ID, dtype: bool
Run Code Online (Sandbox Code Playgroud)

不知道我在哪里犯了错误,没有得到我的输出。

python-3.x pandas

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

提取行直到具有列 Pandas 的特定单词的特定行

我有一个这样的数据框,

   Name    Product    Quantity
0  NaN     1010       10
1  NaN     2010       12
2  NaN     4145       18
3  NaN     5225       14
4  Total   6223       16
5  RRA     7222       18
6  MLQ     5648       45
Run Code Online (Sandbox Code Playgroud)

现在,我需要提取包含行的行/新数据框,直到Total该行位于列中Name

所需输出:

       Name    Product    Quantity
    0  NaN     1010       10
    1  NaN     2010       12
    2  NaN     4145       18
    3  NaN     5225       14
Run Code Online (Sandbox Code Playgroud)

我试过这个,

df[df.Name.str.contains("Total", na=False)]
Run Code Online (Sandbox Code Playgroud)

目前这没有帮助。任何建议都会很棒。

dataframe python-3.x pandas

2
推荐指数
1
解决办法
2438
查看次数

将Pandas Group By扩展为多列

我有这样的数据帧,

创建一个数据框 data

d = {'Machine ID': [100, 100, 101, 101], 'Machine': ["ABC", "ABC", "CDQ", "CDQ"], 
    "June": [10,0,12,15], "July": [12,15,0,32], "August": [0,15,20,11]}
data = pd.DataFrame(data=d)
Run Code Online (Sandbox Code Playgroud)

数据框:

 Machine ID Machine June    July    August
0   100     ABC      10     12     0
1   100     ABC      0      15     15
2   101     CDQ      12     0      20
3   101     CDQ      15     32     11
Run Code Online (Sandbox Code Playgroud)

现在,我想groupby按月汇总,所以,我做了这个,

machine_group = data.groupby(['Machine ID','Machine'])['June'].sum().reset_index(name = 'June Sum')
Run Code Online (Sandbox Code Playgroud)

我得到以下,

 Machine ID Machine June Sum
0   100     ABC     10
1   101     CDQ     27 …
Run Code Online (Sandbox Code Playgroud)

group-by python-3.x pandas

0
推荐指数
1
解决办法
571
查看次数