pandas 将每个分公司不符合规则的数据单独提取出来 储存至对应的分公司表格中
时间: 2024-03-05 09:47:21 浏览: 26
好的,您可以使用 Pandas 的 groupby() 方法将数据按照分公司进行分组,然后遍历每个分组,检查其中不符合规则的数据,并将其单独提取出来储存至对应的分公司表格中。下面是一个示例代码:
```python
import pandas as pd
# 读取原始数据
df = pd.read_csv('data.csv')
# 按照分公司进行分组
groups = df.groupby('分公司')
# 遍历每个分组
for name, group in groups:
# 检查不符合规则的数据
invalid_data = group[group['列名'] < 0]
# 将不符合规则的数据储存至对应的分公司表格中
invalid_data.to_csv(f'{name}.csv', index=False)
```
其中,'data.csv' 是原始数据的文件名,'分公司' 是分公司名称所在的列名,'列名' 是需要检查的列名。您需要将这些参数替换成您实际使用的名称。另外,示例代码中假设需要检查的规则是某一列的数值不能小于 0,您也需要根据实际情况进行修改。
相关问题
pandas将每行字典中数据提取出来
可以使用pandas的apply函数和lambda表达式来将每一行的字典数据提取出来。例如,假设有以下的数据框:
```
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Info': [{'Age': 24, 'Sex': 'F'}, {'Age': 30, 'Sex': 'M', 'Occupation': 'Engineer'}, {'Age': 25, 'Sex': 'M'}]}
df = pd.DataFrame(data)
print(df)
```
输出结果:
```
Name Info
0 Alice {'Age': 24, 'Sex': 'F'}
1 Bob {'Age': 30, 'Sex': 'M', 'Occupation': 'Engineer'}
2 Charlie {'Age': 25, 'Sex': 'M'}
```
要将每行的字典数据提取出来,可以使用apply函数和lambda表达式:
```
df_info = pd.DataFrame(df['Info'].apply(lambda x: {k: v for k, v in x.items()}).tolist())
print(df_info)
```
输出结果:
```
Age Sex Occupation
0 24.0 F None
1 30.0 M Engineer
2 25.0 M None
```
在lambda表达式中,首先将每个字典的键值对用列表推导式的方式提取出来,并使用字典推导式将其转换为新的字典。然后使用tolist()函数将整个Series转换为一个列表,最后使用pd.DataFrame()函数将这个列表转换为一个数据框。这样就可以得到每行字典中的数据了。
pandas 写入excel中每50万行存储为一个单独的表格
可以使用 Pandas 的 `ExcelWriter` 和 `chunksize` 参数实现将数据写入到多个工作表中,每个工作表最多包含 50 万行数据。示例代码如下:
```python
import pandas as pd
# 读取数据
data = pd.read_csv('data.csv')
# 将数据按行进行分块
chunks = pd.read_csv('data.csv', chunksize=500000)
# 创建 ExcelWriter 对象
writer = pd.ExcelWriter('output.xlsx')
# 遍历每个数据块,将数据写入到工作表中
for i, chunk in enumerate(chunks):
# 构造工作表名称
sheet_name = 'Sheet{}'.format(i + 1)
# 将数据写入到工作表中
chunk.to_excel(writer, sheet_name=sheet_name, index=False)
# 保存 Excel 文件
writer.save()
```
这段代码将数据文件 `data.csv` 中的数据按行进行分块,每块最多包含 50 万行数据。然后,将每个数据块写入到一个新的工作表中,并将这些工作表保存到一个名为 `output.xlsx` 的 Excel 文件中。