对于object
数据I可以两列映射到三分之一,(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
所以不是一系列对(即[(10,2), (10,1), (20,2)]
)我得到一个DataFrame
。
我该如何强制pandas
实际获得一系列配对? (最好,做起来不是转换成字符串,然后解析更好。)
以前的行为似乎是一个错误(并在开发分支中修复,但不在0.12中)。 –
为什么你需要一个“元组”的“系列”?把它作为DataFrame中的两列是非常灵活的。 –
@PhillipCloud它不是为了进一步存储 - 只需要一个我有对的系列(所以我可以用series.value_counts()来为配对进行统计 - 例如计算互信息)。 –