假设我有以下简单的 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)
我理解为什么会发生此错误(代码尝试对对象而不是列中的字符串值进行哈希处理),但是有没有办法解决这个问题?
我刚开始开发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) 我有一个小的 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 中实现这一点?
我有一个如下所示的 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值)
我有一个 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 ×4
dataframe ×3
pandas ×3
android ×1
apache-spark ×1
chess ×1
dictionary ×1
java ×1
pyspark ×1
python-3.x ×1
sorting ×1