合并两个表(CSV)if(table1 column A==table2 column A)

2024-05-23 08:05:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个CSV,可以用数字或Excel打开,结构化:
| word | num1 |
以及
| word | num2 |

如果这两个词相等(就像它们都是“嗨”和“嗨”),我希望它变成:
| word | num1 | num2 |

以下是一些图片:

table1table2

就像第一行一样,因为两个词都是一样的,'TRUE',我希望它变成类似
| TRUE | 5.371748 | 4.48957 |

或者通过一些小脚本,或者如果我忽略了一些功能。
谢谢!


Tags: csv功能脚本true图片数字excelword
3条回答

对于csv,我总是访问数据分析库pandashttp://pandas.pydata.org/

import pandas as pd

df1 = pd.read_csv('file1.csv', names=['word','num1'])
df2 = pd.read_csv('file2.csv', names=['word','num2'])
df3 = pd.merge(df1, df2, on='word')
df3.to_csv('merged_data.csv')

使用听写:

with open('file1.csv', 'rb') as file_a, open('file2.csv', 'rb') as file_b:
    data_a = csv.reader(file_a)
    data_b = dict(csv.reader(file_b))  # <-- dict
    with open('out.csv', 'wb') as file_out:
        csv_out = csv.writer(file_out)
        for word, num_a in data_a:
            csv_out.writerow([word, num_a, data_b.get(word, '')])  # <-- edit

(未测试)

我认为您需要的是^{},让您在锁步骤中迭代这两个csv:

with open('file1.csv', 'rb') as f1, open('file2.csv', 'rb') as f2:
    r1, r2 = csv.reader(f1), csv.reader(f2)
    with open('out.csv', 'wb') as fout:
        w = csv.writer(fout)
        for row1, row2 in zip(r1, r2):
            if row1[0] == row2[0]:
                w.writerow([row1[0], row1[1], row2[1]])

我不知道如果他们不平等,你想发生什么。或者像这样插入两行?

            else:
                w.writerow([row1[0], row1[1], ''])
                w.writerow([row2[0], '', row2[1]])

相关问题 更多 >

    热门问题