gpt4 book ai didi

python - 使用可迭代设置时必须具有相等的 len 键和值

转载 作者:行者123 更新时间:2023-11-28 21:38:36 25 4
gpt4 key购买 nike

我有两个数据框如下:

领导者:

0 11
1 8
2 5
3 9
4 8
5 6
[6065 rows x 2 columns]

数据集标签:

   0  1 ....  7  8    9   10   11   12  
0 A J .... 1 2 5 NaN NaN NaN
1 B K .... 3 4 NaN NaN NaN NaN
[4095 rows x 14 columns]

信息数据集列名 0 到 6 是关于数据的 DatasetLabel,7 到 12 是引用 leader Dataframe 第一列的索引。

我想创建数据集,而不是 DatasetLabel 数据帧中的索引,我从 leader 数据帧中获取每个索引的值,即 leader。 iloc[index,1].

我如何使用 python 功能来实现?

输出应该是这样的:

数据集标签:

   0  1 ....  7  8    9   10   11   12  
0 A J .... 8 5 6 NaN NaN NaN
1 B K .... 9 8 NaN NaN NaN NaN

我想出了以下内容,但出现错误:

for column in DatasetLabel.ix[:, 8:13]:
DatasetLabel[DatasetLabel[column].notnull()] = leader.iloc[DatasetLabel[DatasetLabel[column].notnull()][column].values, 1]

错误:

ValueError: Must have equal len keys and value when setting with an iterable

最佳答案

您可以使用 apply 索引到 leader 并与 DatasetLabel 交换值,尽管它不是很漂亮。

一个问题是 Pandas 不允许我们使用 NaN 进行索引。转换为 str 提供了一种解决方法。但这会产生第二个问题,即 9 列的类型是 float(因为 NaNfloat),所以 5 变成了 5.0。一旦它是一个字符串,就是 "5.0",它将无法匹配 leader 中的索引值。我们可以删除 .0,然后这个解决方案就可以工作了 - 但它有点 hack。

使用 DatasetLabel 作为:

   Unnamed:0  0  1  7  8    9  10  11  12
0 0 A J 1 2 5.0 NaN NaN NaN
1 1 B K 3 4 NaN NaN NaN NaN

leader 作为:

   0   1
0 0 11
1 1 8
2 2 5
3 3 9
4 4 8
5 5 6

然后:

cols = ["7","8","9","10","11","12"]
updated = DatasetLabel[cols].apply(
lambda x: leader.loc[x.astype(str).str.split(".").str[0], 1].values, axis=1)

updated
7 8 9 10 11 12
0 8.0 5.0 6.0 NaN NaN NaN
1 9.0 8.0 NaN NaN NaN NaN

现在我们可以concat未修改的列(我们称之为original)和updated:

original_cols = DatasetLabel.columns[~DatasetLabel.columns.isin(cols)]
original = DatasetLabel[original_cols]
pd.concat([original, updated], axis=1)

输出:

   Unnamed:0  0  1    7    8    9  10  11  12
0 0 A J 8.0 5.0 6.0 NaN NaN NaN
1 1 B K 9.0 8.0 NaN NaN NaN NaN

注意:在这里使用 concat 可能会更清楚,但这是合并 originalupdated 的另一种更简洁的方法,使用 分配:

DatasetLabel.assign(**updated)

关于python - 使用可迭代设置时必须具有相等的 len 键和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48000225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com