Pandas 合并数据框创建 nan 列

猕猴桃

我正在尝试将 3x2 excels(3x 组数据,一组用于男性和女性)合并到一个大数据框中。每个excel可以包含不同的人。

每个数据框当前存在 4 列:Lidnummer, Speler, Club, Klassement

每个 excel 如下所示

| Lidnummer | Speler | Club | Klassement |
|-----------|--------|------|------------|
| 1         | some1  | meh  | A          |
| 2         | some2  | meh  | D          |
| 3         | some3  | meh  | B2         |

这适用于每个性别和每个学科 ( s, x, d)

所以我写了下面的代码块来读取每个数据集

single_male = pd.read_excel(xlxs, sheet_name=0)[['Lidnummer', 'Speler', 'Club', 'Klassement']].rename(index=str, columns={'Klassement': 's'}).assign(d=np.nan, x=np.nan, gender='M')
single_female = pd.read_excel(xlxs, sheet_name=1)[['Lidnummer','Speler', 'Club', 'Klassement']].rename(index=str, columns={'Klassement': 's'}).assign(d=np.nan, x=np.nan, gender='F')
double_male = pd.read_excel(xlxs, sheet_name=2)[['Lidnummer','Speler', 'Club', 'Klassement']].rename(index=str, columns={'Klassement': 'd'}).assign(s=np.nan, x=np.nan, gender='M')
double_female = pd.read_excel(xlxs, sheet_name=3)[['Lidnummer','Speler', 'Club', 'Klassement']].rename(index=str, columns={'Klassement': 'd'}).assign(s=np.nan, x=np.nan, gender='F')
mix_male = pd.read_excel(xlxs, sheet_name=4)[['Lidnummer','Speler', 'Club', 'Klassement']].rename(index=str, columns={'Klassement': 'x'}).assign(d=np.nan, s=np.nan, gender='M')
mix_female = pd.read_excel(xlxs, sheet_name=5)[['Lidnummer','Speler', 'Club', 'Klassement']].rename(index=str, columns={'Klassement': 'x'}).assign(d=np.nan, s=np.nan, gender='F')

这将放置我认为合并所需的数据。我将其合并如下

dataFrames = [single_male, single_female, double_male, double_female, mix_male, mix_female]
players = reduce(lambda left, right: pd.merge(left, right, on=['Lidnummer','Speler', 'Club', 'gender'], how='outer'), dataFrames)
players.head()

这似乎有效,只是它创建了列s_x, s_y, d_x, d_y, x_x, x_y并将数据拆分为每个学科(s、d 和 x)的 2 列。

一些谷歌搜索建议包括's'on=合并部分,但后来我得到了错误

You are trying to merge on object and float64 columns. If you wish to proceed you should use pd.concat

我试过使用 concat,但我无法让它工作。

那么我怎样才能为s,制作一列dx包含每个学科的数据?

因此生成的数据集将如下所示:

| Lidnummer | Speler | Club | gender | s  | d   | x  |
|-----------|--------|------|--------|----|-----|----|
| 1         | some1  | meh  | M      | A  | A   | A  |
| 2         | some2  | meh  | F      | D  | C2  | C1 |
| 3         | some3  | meh  | F      | B2 | B1  | B2 |
乔特贝

你能试试下面的代码吗(这里没有excel):

columns= ['Lidnummer', 'Speler', 'Club', 'Klassement']
single_male = pd.read_excel(xlxs, sheet_name=0)[columns]
single_male['gender']='M'

single_female = pd.read_excel(xlxs, sheet_name=1)[columns]
single_male['gender']='F'

double_male = pd.read_excel(xlxs, sheet_name=2)[columns]
single_male['gender']='M'

double_female = pd.read_excel(xlxs, sheet_name=3)[columns]
single_male['gender']='F'

mix_male = pd.read_excel(xlxs, sheet_name=4)[columns]
single_male['gender']='M'

mix_female = pd.read_excel(xlxs, sheet_name=5)[columns]
single_male['gender']='F'

all= pd.concat([single_male, single_female, double_male. double_female, mix_male, mix_female], axis='index', ignore_index=True)

all.rename({'Klassement': 's'}, axis='columns', inplace=True)
all['d']= all['s']
all['x']= all['s']

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用NaN舍入Pandas数据框列中的值

来自分类Dev

绘制包含 NaN 值的 Pandas 数据框列

来自分类Dev

根据条件替换合并数据框中的 NaN --(Python,Pandas)

来自分类Dev

根据数据框中存在的列数合并并创建多个列-Pandas

来自分类Dev

尝试在Pandas数据框中添加列时,为什么会得到np.NaN值?

来自分类Dev

Pandas数据框:在列中获取由“ NaN”分隔的元组组

来自分类Dev

筛选pandas数据框中列的值大于x或NaN的行

来自分类Dev

尝试在Pandas数据框中添加列时,为什么会得到np.NaN值?

来自分类Dev

如果列值为 NaN,pandas 数据框返回布尔值

来自分类Dev

Python / Pandas与NaN数据合并问题

来自分类Dev

pandas数据框:如果条件为NaN或NA或\ n或\ t等,则无法应用lambda函数根据条件创建新列,否则为“否”,否则为“是”

来自分类Dev

忽略nan列的Pandas mean()

来自分类Dev

pandas.Series()使用DataFrame列创建将返回NaN数据条目

来自分类Dev

Python Pandas在数据框中合并相同的名称列

来自分类Dev

在1个pandas数据框中合并2列

来自分类Dev

在pandas数据框中合并多行并按列分组

来自分类Dev

Python Pandas-在数据框中合并两列

来自分类Dev

合并同一 Pandas 数据框中的两列

来自分类Dev

将两个 Pandas 数据框与列值合并

来自分类Dev

在 Pandas/Python 中合并数据框中的列值

来自分类Dev

从Pandas数据框中的其他列创建新列

来自分类Dev

合并熊猫数据框中的 2 列,用以前的值填充 NaN

来自分类Dev

熊猫数据框列减法,处理NaN

来自分类Dev

每月Winsorize数据框列,而忽略NaN

来自分类Dev

合并和连接wo pandas数据框,其中不包括右侧数据框列

来自分类Dev

如何基于在熊猫数据框中具有NaN的现有列创建新列?

来自分类Dev

如何使用另一列的last_valid_index()将pandas数据框设置为NaN

来自分类Dev

如何使用另一列的last_valid_index()将pandas数据框设置为NaN

来自分类Dev

str。包含在pandas数据框中创建新列

Related 相关文章

  1. 1

    使用NaN舍入Pandas数据框列中的值

  2. 2

    绘制包含 NaN 值的 Pandas 数据框列

  3. 3

    根据条件替换合并数据框中的 NaN --(Python,Pandas)

  4. 4

    根据数据框中存在的列数合并并创建多个列-Pandas

  5. 5

    尝试在Pandas数据框中添加列时,为什么会得到np.NaN值?

  6. 6

    Pandas数据框:在列中获取由“ NaN”分隔的元组组

  7. 7

    筛选pandas数据框中列的值大于x或NaN的行

  8. 8

    尝试在Pandas数据框中添加列时,为什么会得到np.NaN值?

  9. 9

    如果列值为 NaN,pandas 数据框返回布尔值

  10. 10

    Python / Pandas与NaN数据合并问题

  11. 11

    pandas数据框:如果条件为NaN或NA或\ n或\ t等,则无法应用lambda函数根据条件创建新列,否则为“否”,否则为“是”

  12. 12

    忽略nan列的Pandas mean()

  13. 13

    pandas.Series()使用DataFrame列创建将返回NaN数据条目

  14. 14

    Python Pandas在数据框中合并相同的名称列

  15. 15

    在1个pandas数据框中合并2列

  16. 16

    在pandas数据框中合并多行并按列分组

  17. 17

    Python Pandas-在数据框中合并两列

  18. 18

    合并同一 Pandas 数据框中的两列

  19. 19

    将两个 Pandas 数据框与列值合并

  20. 20

    在 Pandas/Python 中合并数据框中的列值

  21. 21

    从Pandas数据框中的其他列创建新列

  22. 22

    合并熊猫数据框中的 2 列,用以前的值填充 NaN

  23. 23

    熊猫数据框列减法,处理NaN

  24. 24

    每月Winsorize数据框列,而忽略NaN

  25. 25

    合并和连接wo pandas数据框,其中不包括右侧数据框列

  26. 26

    如何基于在熊猫数据框中具有NaN的现有列创建新列?

  27. 27

    如何使用另一列的last_valid_index()将pandas数据框设置为NaN

  28. 28

    如何使用另一列的last_valid_index()将pandas数据框设置为NaN

  29. 29

    str。包含在pandas数据框中创建新列

热门标签

归档