将 2 个系列的索引混合到 1 个数据框中
blending the indexes from 2 series into 1 dataframe
所以我从这两个列表开始:
import pandas as pd
cat = [4, 5, 5, 6, 7, 4]
dog = [4, 5, 5, 6, 7, 4]
我将它们转换为 pd.Series:
cat = pd.Series(cat, index = ['1', '2', '3', '4', '5', '6'])
dog = pd.Series(dog, index = ['a', 'b', 'c', 'd', 'e', 'f'])
然后使用它们创建一个 DataFrame:
animals = pd.DataFrame([cat, dog], index = ['cat', 'dog']).transpose()
生成以下 DataFrame:
cat dog
1 4.0 NaN
2 5.0 NaN
3 5.0 NaN
4 6.0 NaN
5 7.0 NaN
6 4.0 NaN
a NaN 4.0
b NaN 5.0
c NaN 5.0
d NaN 6.0
e NaN 7.0
f NaN 4.0
我的问题是:如何混合 2 个系列,以便 DataFrame 使用公共索引,而不是从系列中获取的唯一索引?
输出应如下所示:
cat dog
r 4.0 4.0
f 5.0 5.0
v 5.0 5.0
d 6.0 6.0
a 7.0 7.0
h 4.0 4.0
好的,您面临的是内在数据对齐,其中 pandas 对齐大部分基于数据帧索引(包括列 headers)的所有操作。获得所需输出的一种方法是匹配索引。
cat = [4, 5, 5, 6, 7, 4]
dog = [4, 5, 5, 6, 7, 4]
cat = pd.Series(cat, index = ['1', '2', '3', '4', '5', '6']).rename('cat')
dog = pd.Series(dog, index = ['a', 'b', 'c', 'd', 'e', 'f']).rename('dog')
cat_c = cat.rename(index={c:d for c, d in zip(cat.index,dog.index)})
pd.concat([cat_c, dog], axis=1)
输出:
| | cat | dog |
|----|-------|-------|
| a | 4 | 4 |
| b | 5 | 5 |
| c | 5 | 5 |
| d | 6 | 6 |
| e | 7 | 7 |
| f | 4 | 4 |
所以我从这两个列表开始:
import pandas as pd
cat = [4, 5, 5, 6, 7, 4]
dog = [4, 5, 5, 6, 7, 4]
我将它们转换为 pd.Series:
cat = pd.Series(cat, index = ['1', '2', '3', '4', '5', '6'])
dog = pd.Series(dog, index = ['a', 'b', 'c', 'd', 'e', 'f'])
然后使用它们创建一个 DataFrame:
animals = pd.DataFrame([cat, dog], index = ['cat', 'dog']).transpose()
生成以下 DataFrame:
cat dog
1 4.0 NaN
2 5.0 NaN
3 5.0 NaN
4 6.0 NaN
5 7.0 NaN
6 4.0 NaN
a NaN 4.0
b NaN 5.0
c NaN 5.0
d NaN 6.0
e NaN 7.0
f NaN 4.0
我的问题是:如何混合 2 个系列,以便 DataFrame 使用公共索引,而不是从系列中获取的唯一索引?
输出应如下所示:
cat dog
r 4.0 4.0
f 5.0 5.0
v 5.0 5.0
d 6.0 6.0
a 7.0 7.0
h 4.0 4.0
好的,您面临的是内在数据对齐,其中 pandas 对齐大部分基于数据帧索引(包括列 headers)的所有操作。获得所需输出的一种方法是匹配索引。
cat = [4, 5, 5, 6, 7, 4]
dog = [4, 5, 5, 6, 7, 4]
cat = pd.Series(cat, index = ['1', '2', '3', '4', '5', '6']).rename('cat')
dog = pd.Series(dog, index = ['a', 'b', 'c', 'd', 'e', 'f']).rename('dog')
cat_c = cat.rename(index={c:d for c, d in zip(cat.index,dog.index)})
pd.concat([cat_c, dog], axis=1)
输出:
| | cat | dog |
|----|-------|-------|
| a | 4 | 4 |
| b | 5 | 5 |
| c | 5 | 5 |
| d | 6 | 6 |
| e | 7 | 7 |
| f | 4 | 4 |