Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 合并两个表(CSV)如果(表1列A==表2列A)_Python_Excel_Csv_Formatting - Fatal编程技术网

Python 合并两个表(CSV)如果(表1列A==表2列A)

Python 合并两个表(CSV)如果(表1列A==表2列A),python,excel,csv,formatting,Python,Excel,Csv,Formatting,我有两个CSV,可在数字或Excel中打开,结构化: | word | num1 | 和 | word | num2 | 如果这两个词相等(就像它们都是“hi”和“hi”),我希望它变成: | word | num1 | num2 | 以下是一些图片: 就像第1行一样,因为两个单词都是相同的“TRUE”,我希望它变成类似 | TRUE | 5.371748 | 4.48957 | 或者通过一些小脚本,或者如果我忽略了某些特性/功能。 谢谢 我认为您需要的是,让您在锁定步骤中迭代两个CSV:

我有两个CSV,可在数字或Excel中打开,结构化:
| word | num1 |


| word | num2 |

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

以下是一些图片:

就像第1行一样,因为两个单词都是相同的“TRUE”,我希望它变成类似
| TRUE | 5.371748 | 4.48957 |

或者通过一些小脚本,或者如果我忽略了某些特性/功能。

谢谢

我认为您需要的是,让您在锁定步骤中迭代两个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]])
使用口述:

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
打开('file1.csv','rb')作为文件a,打开('file2.csv','rb')作为文件b:
数据\u a=csv.reader(文件\u a)

data_b=dict(csv.reader(file_b))#对于
csv
,我总是去数据分析库
pandas


这几乎奏效了。问题是我的前两个csv文件没有“同步”。。。最后会出现这样的问题(注意“100%”的双重输入)。@AndrewSB:你需要解释一下你到底想做什么。给我们一些(小的)输入示例和预期的输出,解释任何不明显的地方。在正确的轨道上,但它在每个字符和每个字符之间加了一个逗号。我该换什么?哎呀!少了一对括号。请看我的编辑。这几乎完美。是否有任何方法可以将两个csv中都不存在的单词添加到dict中?例如,假设第一个csv中有一个单词不在第二个csv中,您可以只添加第一个csv中的单词和数字,而将第三列留空吗?
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')