python pandas 合并_python – pandas:将多个类别合并为一个

假设我有类别,1到10,我想将红色分配给值3到5,绿色分配给1,6和7,蓝色分配给2个,8个,9个和10个.

我该怎么做?如果我试试

df.cat.rename_categories(['red','green','blue'])

我收到一个错误:ValueError:新类别需要具有与旧类别相同数量的项目!但如果我把它放进去

df.cat.rename_categories(['green','blue','red', 'red', 'red'

'green', 'green', 'blue', 'blue' 'blue'])

我会收到一个错误,说有重复的值.

我能想到的唯一另一种方法是编写一个for循环,它将遍历值的字典并替换它们.是否有更优雅的解决方案?

解决方法:

不确定优雅,但是如果你制作一个旧到新类别的词典,就像(注意添加的“紫色”):

>>> m = {"red": [3,4,5], "green": [1,6,7], "blue": [2,8,9,10], "purple": [11]}

>>> m2 = {v: k for k,vv in m.items() for v in vv}

>>> m2

{1: 'green', 2: 'blue', 3: 'red', 4: 'red', 5: 'red', 6: 'green',

7: 'green', 8: 'blue', 9: 'blue', 10: 'blue', 11: 'purple'}

您可以使用它来构建新的分类系列:

>>> df.cat.map(m2).astype("category", categories=set(m2.values()))

0 green

1 blue

2 red

3 red

4 red

5 green

6 green

7 blue

8 blue

9 blue

Name: cat, dtype: category

Categories (4, object): [green, purple, red, blue]

如果您确定在列中可以看到所有分类值,则不需要categories = set(m2.values())(如果您关心分类排序,则需要有序的等效项).但是在这里,如果我们不这样做,我们就不会在得到的分类中看到紫色,因为它是从实际看到的类别构建的.

当然,如果你已经建立了你的列表[‘green’,’blue’,’red’等],那么使用它直接创建一个新的分类列并完全绕过这个映射也同样容易.

标签:python,pandas

来源: https://codeday.me/bug/20190528/1169308.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用Python中的pandas库来合并多个Excel文件。具体步骤如下: 1. 导入pandas库和os库 ```python import pandas as pd import os ``` 2. 设置要合并的Excel文件所在的文件夹路径 ```python folder_path = 'path/to/your/folder' ``` 3. 获取文件夹中所有Excel文件的文件名 ```python file_names = os.listdir(folder_path) excel_files = [f for f in file_names if f.endswith('.xlsx')] ``` 4. 创建一个空的DataFrame ```python df = pd.DataFrame() ``` 5. 遍历所有Excel文件,将它们读取为DataFrame,并将它们合并到df中 ```python for file in excel_files: file_path = os.path.join(folder_path, file) temp_df = pd.read_excel(file_path) df = pd.concat([df, temp_df], ignore_index=True) ``` 6. 将合并后的DataFrame保存为一个新的Excel文件 ```python output_file_path = 'path/to/output/file.xlsx' df.to_excel(output_file_path, index=False) ``` 以上就是使用pandas合并多个Excel文件的步骤。 ### 回答2: 要将多个Excel文件合并一个文件,我们可以使用Python中的Pandas库。Pandas一个专门用于数据处理和数据分析的库,它提供了DataFrame(数据帧)的数据结构,可以非常方便地处理和操作数据。 首先,我们需要安装Pandas库。我们可以使用pip命令在终端中输入以下命令进行安装: ``` pip install pandas ``` 在安装完成后,我们就可以开始使用Pandas合并多个Excel文件了。下面是基本的思路: 1. 导入Pandas库 ``` import pandas as pd ``` 2. 读取Excel文件 我们可以使用`pd.read_excel()`方法来读取Excel文件。例如,如果我们要读取名为“file1.xlsx”的文件,可以使用以下代码: ``` df1 = pd.read_excel('file1.xlsx') ``` 3. 合并多个Excel文件 我们可以使用`pd.concat()`方法来合并多个DataFrame对象。例如,如果我们要合并df1、df2和df3三个DataFrame对象,可以使用以下代码: ``` result = pd.concat([df1, df2, df3]) ``` 其中,`result`变量将包含所有DataFrame对象中的数据,并将它们合并一个大DataFrame对象。 4. 将数据保存到新的Excel文件中 最后,我们可以使用`result.to_excel()`方法将合并后的数据保存到一个新的Excel文件中。例如,我们可以使用以下代码将数据保存到名为“merged.xlsx”的文件中: ``` result.to_excel('merged.xlsx', index=False) ``` 在这种情况下,`index`参数被设置为`False`,这意味着我们不希望将DataFrame对象中的索引列也保存到Excel文件中。 总之,使用Pandas合并多个Excel文件非常简单,只需使用上述步骤即可。这种方法适用于多种不同的数据合并场景。 ### 回答3: 要合并多个Excel文件,可以使用Python中的pandas库。pandas库提供了许多方便的函数来处理数据,包括读取、修改和合并数据。 以合并两个Excel文件为例,我们先读取两个Excel文件(假设都在同一文件夹下): ```python import pandas as pd df1 = pd.read_excel("file1.xlsx") df2 = pd.read_excel("file2.xlsx") ``` 接下来,我们可以使用pandas库中的concat函数将两个数据框(dataframe)合并一个。如果两个数据框中的列名不同,我们可以使用rename函数将它们重命名为相同的列名: ```python df1 = df1.rename(columns={"old_name": "new_name"}) df2 = df2.rename(columns={"old_name": "new_name"}) merged_df = pd.concat([df1, df2]) ``` 如果想按照行的方式合并,即将df2的内容,添加到df1的后面,可以使用append方法: ```python merged_df = df1.append(df2) ``` 如果要将多个Excel文件合并一个,可以使用循环遍历每个Excel文件,然后使用concat或append函数将它们合并起来: ```python import os # 获取当前文件夹下的所有Excel文件 files = [f for f in os.listdir(".") if f.endswith(".xlsx")] # 将所有Excel文件读取成数据框并合并 merged_df = pd.DataFrame() for file in files: df = pd.read_excel(file) merged_df = merged_df.append(df) # 将合并后的数据框写入到Excel文件中 merged_df.to_excel("merged.xlsx", index=False) ``` 以上就是用Python pandas合并多个Excel文件的方法。需要注意的是,如果合并的Excel文件中有重复的列名或者行号,可能会导致合并后的结果出现错误。因此,在合并之前,最好先检查数据的格式和内容,确保能够正确合并
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值