小编Pet*_*ter的帖子

如何用字典中的查找值替换 pandas DataFrame 列?

假设我有以下简单的 pandas DataFrame:

df = pd.DataFrame({"id": [1, 2, 3, 4, 5],
                   "country": ["Netherlands", "Germany", "United_States", "England", "Canada"]})
Run Code Online (Sandbox Code Playgroud)

以及包含列中值缩写的字典country

abr = {"Netherlands": "NL",
       "Germany": "GE",
       "United_States": "US",
       "England": "EN",
       "Canada": "CA"
}
Run Code Online (Sandbox Code Playgroud)

country我想将DataFrame 列中的值更改为字典中的查找值。结果如下:

    id  country
0   1   NE
1   2   GE
2   3   US
3   4   EN
4   5   CA
Run Code Online (Sandbox Code Playgroud)

我尝试使用

df["country"] = abr[df["country"]]
Run Code Online (Sandbox Code Playgroud)

但这给出了以下错误:

TypeError: 'Series' objects are mutable, thus they cannot be hashed
Run Code Online (Sandbox Code Playgroud)

我理解为什么会发生此错误(代码尝试对对象而不是列中的字符串值进行哈希处理),但是有没有办法解决这个问题?

python dictionary dataframe pandas

8
推荐指数
2
解决办法
5174
查看次数

如何在android国际象棋应用程序中处理拖动?

我刚开始开发Android应用程序(使用java,在Android工作室,如果这很重要),我正在做一个小项目,只是为了好玩.我想创建自己的国际象棋应用程序,到目前为止我做了很多事情.我设置了一个菜单切换到另一个活动,这是游戏本身,我用自绘板制作了一个自定义视图,我认为我的模型也差不多完整了.我唯一不明白的是如何处理阻力.因此,当您使用拖动手势将一个部件从一个位置移动到另一个位置时,您如何获得该部分的起点和终点?

如上所述,我已经在我的模型中实现了一个移动(带有一个函数移动(位置开始,位置结束)),它还检查该移动是否对某个部分有效,但我唯一需要的是让它我在实际的板上拖了一块.

我正在考虑在我的Controller类中放置一个onDrag方法,但我不知道如何解决这个问题,并且无法在互联网上找到好的例子.我已经开始了,但不知道它是否可行.

你能帮我实现拖拽吗?

提前致谢!

PS我还将在我的问题中添加自定义视图和(尚未完成)控制器的代码,如果这有帮助的话.如果您需要更多我的代码来回答这个问题,我也会把它放在这里,让我知道.

public class ChessView extends View implements Observer {
    private Game game;
    private static final Paint WHITE_PAINT = new Paint(), BLACK_PAINT = new Paint();

    public ChessView(Context context) {
        super(context);
        init();
    }

    public ChessView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public ChessView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

    public void init() {
        WHITE_PAINT.setColor(Color.rgb(200, 159, 77));
        BLACK_PAINT.setColor(Color.rgb(61, 34, 18));
    }

    public void setGame(Game game) {
        if (this.game != null)
            this.game.deleteObserver(this); …
Run Code Online (Sandbox Code Playgroud)

java android chess android-studio

7
推荐指数
1
解决办法
595
查看次数

如何在 PySpark 中使用列值作为字典的键?

我有一个小的 PySpark DataFrame df

index    col1
0        1    
1        3
2        4
Run Code Online (Sandbox Code Playgroud)

还有一本字典:

LOOKUP = {0: 2, 1: 5, 2: 5, 3: 4, 4: 6}
Run Code Online (Sandbox Code Playgroud)

我现在想col2向 中添加一个额外的列df,等于LOOKUP的值col1

我的输出应该是这样的:

index    col1 col2
0        1    5    
1        3    4
2        4    6
Run Code Online (Sandbox Code Playgroud)

我尝试使用:

df = df.withColumn(col("col2"), LOOKUP[col("col1")])
Run Code Online (Sandbox Code Playgroud)

但这给了我错误,以及使用expr.

如何在 PySpark 中实现这一点?

python dataframe apache-spark apache-spark-sql pyspark

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

给定该列中已排序的值列表,如何对该列上的 pandas DataFrame 进行排序?

我有一个如下所示的 pandas DataFrame:

df = pd.DataFrame({["id": [1, 2, 3, 4, 5],
                    "fruit": ["apple", "banana", "pineapple", "orange", "orange"],
                    "trash": [38, 22, 93, 1, 15]})
Run Code Online (Sandbox Code Playgroud)

fruit现在我想根据提供的有序列表对该 DataFrame 的行在 column 上进行排序。可以说这个列表是:

ordered_list = ["pinapple", "banana", "orange", "apple"]
Run Code Online (Sandbox Code Playgroud)

我想产生以下输出(我不关心具有相同水果值的行的顺序,因此行orange可能会颠倒):

id        fruit        trash
3         pineapple    93
2         banana       22
4         orange       1
5         orange       15
1         apple        38
Run Code Online (Sandbox Code Playgroud)

怎么解决这个问题呢?我知道我可以使用一些 for 循环,但如果没有更优雅的解决方案(我无法找到),我会感到惊讶。该解决方案应该尽可能节省时间,因为真正的 DataFrame 由大约 5000 行组成(大约有 50 个唯一fruit值)

python sorting dataframe pandas

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

如何对包含 Python 中元组列表的 Pandas DataFrame 列执行各种操作?

我有一个 Pandas DataFrame,其中一列resources包含一个元组列表。例如,采用以下 DataFrame:

df = pd.DataFrame({"id": [1, 2, 3],
                   "resources": [[(1, 3), (1, 1), (2, 9)], 
                               [(3, 1), (3, 1), (3, 4)], 
                               [(9, 0), (2, 6), (5,5)]]
                  })
Run Code Online (Sandbox Code Playgroud)

现在,我想将以下列添加到我的 DataFrame 中,其中包含以下内容:

  • first包含一个列表的列,其中元组的第一个元素是唯一的resources(所以基本上是所有第一个元素的集合)
  • second包含一个列表的列,其中包含元组的唯一第二个元素resources(因此基本上是所有第二个元素的集合)
  • same包含resources具有相同第一个和第二个元素的元组数的列
  • different包含resources具有不同第一和第二元素的元组数的列

所需的输出列如下所示:

  • first[[1, 2], [3], [9, 2, 5]]
  • second[[1, 3, 9], [1, 4], [0, 6, 5]]
  • same[1, 0, 1]
  • different[2, 3, 2]

如何以最少的时间实现这一目标?我首先考虑使用 …

python python-3.x pandas

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