gpt4 book ai didi

python - 将一些数字列映射到 Pandas 中的新元组列

转载 作者:行者123 更新时间:2023-11-28 22:54:09 25 4
gpt4 key购买 nike

对于 object 数据,我可以将两列映射到第三个(object)元组列

>>> import pandas as pd
>>> df = pd.DataFrame([["A","b"], ["A", "a"],["B","b"]])
>>> df
0 1
0 A b
1 A a
2 B b

>>> df.apply(lambda row: (row[0], row[1]), axis=1)
0 (A, b)
1 (A, a)
2 (B, b)
dtype: object

(另见 Pandas: How to use apply function to multiple columns)。

但是,当我尝试对数字列做同样的事情时

>>> df2 = pd.DataFrame([[10,2], [10, 1],[20,2]])
df2.apply(lambda row: (row[0], row[1]), axis=1)
0 1
0 10 2
1 10 1
2 20 2

所以我得到一个 DataFrame 而不是一系列的对(即 [(10,2), (10,1), (20,2)]) .

我怎样才能强制 pandas 实际得到一系列的对? (最好这样做比转换为字符串然后再解析更好。)

最佳答案

我不推荐这样做,但您可以强制这样做:

In [11]: df2.apply(lambda row: pd.Series([(row[0], row[1])]), axis=1)
Out[11]:
0
0 (10, 2)
1 (10, 1)
2 (20, 2)

请不要这样做。

两列将为您提供更好的性能、灵 active 和便于日后分析。

只是为了更新 OP 的经验:

我们想要的是计算每个 [0, 1] 对的出现次数。

在系列中,他们可以使用 value_counts方法(使用上述结果中的列)。但是,使用 groupby 可以获得相同的结果。发现速度快了 300 倍(对于 OP):

df2.groupby([0, 1]).size()

值得(再次)强调的是,[11] 必须为每一行创建一个 Series 对象和一个元组实例,相比之下,这是一个巨大的开销到 groupby 的那个。

关于python - 将一些数字列映射到 Pandas 中的新元组列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18392998/

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