python中csv根据其中三列数据排列组合
时间: 2023-12-12 19:02:53 浏览: 62
可以使用pandas库来实现根据三列数据排列组合的操作。下面是一个示例代码:
```python
import pandas as pd
# 读取csv文件
df = pd.read_csv('data.csv')
# 根据三列数据进行排列组合
result = pd.DataFrame({'col1': df['col1'].unique()})
for val1 in result['col1']:
for val2 in df[df['col1']==val1]['col2'].unique():
for val3 in df[(df['col1']==val1) & (df['col2']==val2)]['col3']:
result.loc[(result['col1']==val1), f'{val2}_{val3}'] = True
# 输出结果
print(result)
```
其中,`data.csv`是待处理的csv文件,`col1`、`col2`、`col3`分别表示其中的三列数据。输出的`result`是一个DataFrame对象,其中每一行表示一种组合,每一列表示一个组合中的元素是否存在。例如,如果第一行第二列的值为True,则表示这个组合中包含第二列为`val2`、第三列为`val3`的元素。
相关问题
python:一张csv表中根据其中三列cate、biz、result进行排列组合,每个组合随机取50条数据,不够50条的有多少取多少条,把随机取出的数据行写进一张新的表
可以使用Pandas库来完成这个任务。以下是一个可能的实现:
```python
import pandas as pd
import random
# 读取原始CSV表
df = pd.read_csv('original.csv')
# 根据cate、biz、result列进行分组
groups = df.groupby(['cate', 'biz', 'result'])
# 创建空的新表
new_df = pd.DataFrame(columns=df.columns)
# 对每个组合进行处理
for name, group in groups:
# 随机取50条数据,如果不足50条则取全部
n = min(50, len(group))
sample = group.sample(n)
# 将取出的数据行添加到新表中
new_df = pd.concat([new_df, sample], ignore_index=True)
# 将结果写入新的CSV表
new_df.to_csv('new.csv', index=False)
```
以上代码首先读取原始CSV表,然后根据cate、biz、result列进行分组。接着对于每个组合,随机取出50条数据或全部数据,将取出的数据行添加到新表中。最后将新表写入CSV文件中。
python:一张表按照biz、来源、预期这三列排列组合统计,按照这三列去重,统计每个组合的数量,生成一张新的表,按照biz、来源、预期三列排列组合,表头为biz、来源、预期、类型数量、预测正确数、预测错误数、准确率,其中预测正确数为原表中排列组合下预期列等于pre列的数量,预测错误数则为预期列不等于pre列的数量,准确率等于预测正确数/组合数量
你可以使用 pandas 库来完成这个任务。假设原始数据表名为 `data`,包含三列 `biz`、`来源` 和 `预期`,代码如下:
```python
import pandas as pd
# 读取原始数据表
data = pd.read_csv('data.csv')
# 筛选出需要的列并去重
grouped = data[['biz', '来源', '预期']].drop_duplicates()
# 统计每个组合的数量
grouped_count = data.groupby(['biz', '来源', '预期']).size().reset_index(name='类型数量')
# 统计预测正确数和预测错误数
correct_count = data[data['预期'] == data['pre']].groupby(['biz', '来源', '预期']).size().reset_index(name='预测正确数')
error_count = data[data['预期'] != data['pre']].groupby(['biz', '来源', '预期']).size().reset_index(name='预测错误数')
# 合并表格
result = pd.merge(grouped_count, correct_count, how='left', on=['biz', '来源', '预期'])
result = pd.merge(result, error_count, how='left', on=['biz', '来源', '预期'])
# 计算准确率
result['准确率'] = result['预测正确数'] / result['类型数量']
# 输出结果
result.to_csv('result.csv', index=False)
```
这里使用了 `groupby` 和 `merge` 函数来进行分组和合并操作,具体可以参考 pandas 官方文档。最后将结果输出到一个新的表格中。
阅读全文