如何用pandas根据excel的“路线描述”列筛选包含“江西”的数据,若有则保存到df1,若没有则输出“无江西路单”
时间: 2023-11-11 15:07:57 浏览: 95
好的,根据您的要求,以下是代码:
```python
import pandas as pd
# 读取excel文件,假设"路线描述"在第2列,第一行为表头
df = pd.read_excel("your_excel_file.xlsx", header=0, usecols=[1])
# 创建一个名为"江西"的Series来存储路线描述是否包含"江西"
contains_jiangxi = df.iloc[:,0].str.contains("江西")
# 检查是否存在江西路单
if any(contains_jiangxi):
# 存在江西路单,将数据保存到df1
df1 = df[contains_jiangxi]
else:
# 不存在江西路单,输出信息
print("无江西路单")
```
如果您需要筛选的是多个关键字,例如包含"江西"和"广东",可以像这样修改代码:
```python
contains_jiangxi_and_guangdong = df.iloc[:,0].str.contains("江西") & df.iloc[:,0].str.contains("广东")
if any(contains_jiangxi_and_guangdong):
df1 = df[contains_jiangxi_and_guangdong]
else:
print("无江西和广东路单")
```
希望这可以帮助您!
相关问题
现有两张表df1和df2,所有列名都相同,但行数不一样,如何用pandas根据名为“合同编号”的列将df1和df2进行匹配, 若df2中有df1没有的数据则把这些数据写入df1底部,并打印“df1”已更新,若df2中所有数据df1都有,则打印“df1不用更新”
可以使用pandas的merge函数将df1和df2根据“合同编号”列进行合并,然后判断合并后的数据行数是否与df1的行数相等,如果不相等说明df2中有df1没有的数据,需要将这些数据写入df1底部,并打印“df1已更新”,否则打印“df1不用更新”。
具体代码如下:
```
import pandas as pd
# 读取df1和df2
df1 = pd.read_excel('df1.xlsx')
df2 = pd.read_excel('df2.xlsx')
# 根据“合同编号”列进行合并
merged = pd.merge(df1, df2, on='合同编号', how='outer')
if len(merged) != len(df1):
# 将df2中df1没有的数据写入df1底部
new_data = merged[merged['合同编号'].isin(df1['合同编号']) == False]
df1 = pd.concat([df1, new_data], ignore_index=True)
df1.to_excel('df1.xlsx', index=False)
print('df1已更新')
else:
print('df1不用更新')
```
pandas 有两个df数据,根据df1的最后一列数据,把df2的列匹配给df1
可以使用 pandas 的 merge 函数将两个 DataFrame 进行匹配,根据 df1 的最后一列数据将 df2 的列匹配给 df1。具体的操作如下:
``` python
import pandas as pd
# 生成示例数据
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': ['X', 'Y', 'Z']})
df2 = pd.DataFrame({'D': [7, 8, 9], 'E': [10, 11, 12], 'C': ['X', 'Y', 'Z']})
# 使用 merge 函数进行匹配
df_merged = pd.merge(df1, df2, on='C')
# 输出匹配后的结果
print(df_merged)
```
上述代码中,我们首先生成了两个示例数据 df1 和 df2,分别含有三列和两列数据。其中 df1 包含了最后一列 C,根据这一列数据将 df2 的列匹配给 df1。接着,我们使用 merge 函数将两个 DataFrame 进行匹配,使用 on='C' 表示根据 C 列进行匹配。最后,输出匹配后的结果,即包含所有列的新 DataFrame。
阅读全文