Python 重新排列CSV数据

Python 重新排列CSV数据,python,csv,Python,Csv,我有两个不同列顺序的csv文件。例如,第一个文件以10位移动电话号码开头,而第二个文件中该列为数字4。 我需要将所有客户数据合并到一个csv文件中。列的顺序应如下所示: mobile pincode model Name Address Location pincode date 第二个任务(可能有点困难)是预期的新文件可能具有完全不同的列序列。在这种情况下,我需要提取10位移动电话号码和6位pincode列。我需要写的代码,将猜测城市列,如果它与任何给定的城市列表匹配。新文件应具有相关的

我有两个不同列顺序的csv文件。例如,第一个文件以10位移动电话号码开头,而第二个文件中该列为数字4。 我需要将所有客户数据合并到一个csv文件中。列的顺序应如下所示:

mobile pincode model Name Address Location pincode date


第二个任务(可能有点困难)是预期的新文件可能具有完全不同的列序列。在这种情况下,我需要提取10位移动电话号码和6位pincode列。我需要写的代码,将猜测城市列,如果它与任何给定的城市列表匹配。新文件应具有相关的列标题,但列标题可能略有不同。例如,“客户地址”而不是“地址”。我如何处理这些数据

sed 's/.*\([0-9]\{10\}\).*/\1,&/' input
有人建议我使用sed重新排列开头的10位数列。但我也需要重新排列文本列。例如,如果某列与下表中的条目匹配,则该列无疑是模型列

['Crz', 'Bmw 320 D', 'Benz', 'Mercedes_E 350 Cdi', 'Toyota_Corolla He 1.8']

如果任何一列将10%的条目与上述列表匹配,则该列为“模型”列,应位于第3位,后跟mobile和pincode。

对于您的第一个问题,我建议使用pandas加载这两个文件,然后再加载concat。之后,您可以重新排列列

import pandas as pd
dataframe1 = pd.read_csv('file1.csv')
dataframe2 = pd.read_csv('file2.csv')
combined = pd.concat([dataframe1, dataframe2]) #the columns will be ordered alphabetically
为了得到想要的订单

result_df = combined[['mobile', 'pincode', 'model', 'Name', 'Address', 'Location', 'pincode', 'date']]
然后
result\u df.to\u csv('oupput.csv',index=False)
导出到csv文件

对于第二个,您可以这样做(假设您已经像上面那样将csv文件加载到df中)


如果需要,您可以修改匹配函数
match\u model
以使用正则表达式。

是否有一个脚本可以分析csv数据并显示类似这样的结果。。。column1-数字10位,column2-文本平均值1个单词,column3-文本平均值4个单词(最多10个单词)此文件是逗号还是其他任何分隔的文件?逗号分隔的文件所以让我们使用csv DictReader,它从每行字典生成,其中键从第一行到列名,值从第一行到适当的值。然后根据需要操纵它。
result_df = combined[['mobile', 'pincode', 'model', 'Name', 'Address', 'Location', 'pincode', 'date']]
match_model = lambda m: m in ['Crz', 'Bmw 320 D', 'Benz', 'Mercedes_E 350 Cdi',   'Toyota_Corolla He 1.8']

for c in df:
    if df[c].map(match_model).sum()/len(df) > 0.1:
        print "Column %s is 'Model'"% c
        df.rename(columns={c:'Model'}, inplace=True)