鱼C论坛

 找回密码
 立即注册
查看: 47|回复: 8

组合df

[复制链接]
发表于 前天 18:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
现有一个DATAFRAME类型的数据df,需要如下组合变成一个新的df
第0列,第1列,第3列,第4列组成一个df1
第0列,第7列,第9列,第10列组成一个df2
第0列,第13列,第14列,第16列组成一个df3
将df1,df2,df3组成一个新的df,并将新的列依次命名为“备注”,“牌号”,“规格”,“定额”

另有一个df_old,也有列“备注”,“牌号”,“规格”,将df_old和df组合成为一个df_new,以df_old为主
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 前天 18:23 | 显示全部楼层
要实现您提到的操作,可以按照下面的步骤进行。

1. **组合新的数据帧(df1, df2, df3)**:
   - 从原始 `df` 中提取相应的列来创建新的数据帧。
   - 重新命名各个数据帧中的列,然后连接成一个新的数据帧。

2. **合并新的数据帧与已有的 df_old**:
   - 将 `df_old` 与由(df1, df2, df3)的组合结果进行外连接,以 `df_old` 为主。

以下是如何在 Python 中使用 Pandas 库来实现这些操作:
import pandas as pd

# 假设df是您现有的DataFrame
# 创建df1, df2, df3
df1 = df[[0, 1, 3, 4]]
df2 = df[[0, 7, 9, 10]]
df3 = df[[0, 13, 14, 16]]

# 重新命名列
df1.columns = ["备注", "牌号", "规格", "定额"]
df2.columns = ["备注", "牌号", "规格", "定额"]
df3.columns = ["备注", "牌号", "规格", "定额"]

# 合并df1, df2, df3
new_df = pd.concat([df1, df2, df3], ignore_index=True)

# 假设df_old是已有的DataFrame
# 合并df_old和new_df,以df_old为主
df_new = pd.merge(df_old, new_df, on=["备注", "牌号", "规格"], how='left')

# 现在df_new就是您所需要的最终结果

这个代码段演示了如何分割原始 `df` 并重新组合列,然后与 `df_old` 合并。确保在使用代码时将各个 DataFrame 的格式和列名正确设置。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 18:26 | 显示全部楼层
现有一个DATAFRAME类型的数据df,需要如下组合变成一个新的df
第0列,第1列,第3列,第4列组成一个df1,不吸收第3列为空的
第0列,第7列,第9列,第10列组成一个df2,不吸收第7列为空的
第0列,第13列,第14列,第16列组成一个df3,不吸收第13列为空的
将df1,df2,df3组成一个新的df,并将新的列依次命名为“备注”,“牌号”,“规格”,“定额”

另有一个df_old,也有列“备注”,“牌号”,“规格”,将df_old和df组合成为一个df_new,以df_old为主
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 前天 18:27 | 显示全部楼层
颂风侯 发表于 2024-11-19 18:26
现有一个DATAFRAME类型的数据df,需要如下组合变成一 ...


好的,您可以使用以下步骤实现您想要的操作:

1. **创建三个子DataFrame并过滤掉不希望的空值**:
   - 从原始的 `df` 中提取所需的列。
   - 过滤掉指定列为空值的行。

2. **重命名列**:
   - 将每个子DataFrame的列名更改为“备注”,“牌号”,“规格”,“定额”。

3. **合并子DataFrame**:
   - 将 `df1`,`df2` 和 `df3` 纵向合并成一个新的 DataFrame。

4. **合并新的 DataFrame 与 `df_old`**:
   - 将 `df_old` 与新创建的 DataFrame 进行合并,以 `df_old` 为主。

以下是具体实现的代码:
import pandas as pd

# 假设df是现有的DataFrame
# 创建df1, 并过滤掉第3列为空的行
df1 = df[[0, 1, 3, 4]].dropna(subset=[3])

# 创建df2, 并过滤掉第7列为空的行
df2 = df[[0, 7, 9, 10]].dropna(subset=[7])

# 创建df3, 并过滤掉第13列为空的行
df3 = df[[0, 13, 14, 16]].dropna(subset=[13])

# 重新命名列
df1.columns = ["备注", "牌号", "规格", "定额"]
df2.columns = ["备注", "牌号", "规格", "定额"]
df3.columns = ["备注", "牌号", "规格", "定额"]

# 合并三个数据帧
new_df = pd.concat([df1, df2, df3], ignore_index=True)

# 假设df_old是已有的DataFrame
# 合并df_old和new_df,以df_old为主
df_new = pd.merge(df_old, new_df, on=["备注", "牌号", "规格"], how='left')

# 现在df_new就是最终结果

这段代码演示了如何处理您给出的需求。请替换 `df` 和 `df_old` 为您的实际数据帧;同时,确保数据帧的索引列与计划的一致。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 18:48 | 显示全部楼层
为什么用dropna后空值的列还是导出来了,百思不得其解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 前天 18:48 | 显示全部楼层
颂风侯 发表于 2024-11-19 18:48
为什么用dropna后空值的列还是导出来了,百思不得其解


可能的原因如下:

1. **列选择错误**:请确保在 `dropna` 方法中指定的列名或索引是正确的,与你希望排除空值的列一致。

2. **空值的类型不一致**:有时候,空值可能不是标准的 `NaN`,而是其他类型的空值(例如空字符串),这需要不同的处理方式。

3. **原始数据没有被更新**:检查一下代码是否确实将应用 `dropna` 的结果赋值回了 DataFrame。

以下是一个确保 `dropna` 正常工作的示例:
import pandas as pd

# 假设df是现有的DataFrame
# 创建df1, 并过滤掉第3列为空的行
df1 = df.iloc[:, [0, 1, 3, 4]].dropna(subset=[df.columns[3]])

# 重新命名列
df1.columns = ["备注", "牌号", "规格", "定额"]

# 打印以检查
print(df1)

在检查代码时,确保各个地方都正确执行,包括列的选择以及 `dropna` 使用的列。若你的数据中包含不同格式的“空值”,需考虑使用其他方法如 `replace` 将其先转换为标准 `NaN`。如果还有问题,请进一步描述您的数据特征,我能更针对性地帮助您。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 18:57 | 显示全部楼层
错误提示如下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 18:57 | 显示全部楼层
IndexError: index 7 is out of bounds for axis 0 with size 5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 前天 19:04 | 显示全部楼层


请提供完整的错误信息,这样我能更好地帮助您解决问题。错误提示通常会指出问题的具体位置和性质。根据您之前的描述,也许问题出在 `dropna` 或 DataFrame 列的选择上。请分享错误信息的详细内容,这样我可以为您提供更准确的建议。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 16:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表