gpt4 book ai didi

python - 重新排列 CSV 数据

转载 作者:太空宇宙 更新时间:2023-11-04 06:03:24 24 4
gpt4 key购买 nike

我有 2 个具有不同列顺序的 csv 文件。例如第一个文件以 10 位手机号码开头,而该列在第二个文件中位于第 4 位。我需要将所有客户数据合并到一个 csv 文件中。列的顺序应如下所示:

mobile pincode model Name Address Location pincode date

mobile  Name    Address Model   Location    pincode Date
9845299999 Raj Shah nagar No 22 Rivi Building 7Th Main I Crz Mumbai 17/02/2011
9880877777 Managing Partner M/S Aitas # 1010, 124Th Main, Bk Stage. - Bmw 320 D Hyderabad 560070 30-Dec-11


Name Address Location mobile pincode Date Model
Asvi Developers pvt Ltd fantry Road Nariman Point, 1St Floor, No. 150 Chennai 9844066666 13/11/2011 Crz
L R Shiva Gaikwad & Sudha Gaikwad # 42, Suvarna Mansion, 1St Cross, 17Th Main, Banjara Hill, B S K Stage,- Bangalore 9844233333 560085 40859 Mercedes_E 350 Cdi

第二个任务可能有点困难,因为预期的新文件可能具有完全不同的列顺序。在那种情况下,我需要提取 10 位手机号码和 6 位密码列。如果它与任何给定的城市列表匹配,我需要编写代码来猜测城市列。新文件应具有相关的列标题,但列标题可能略有不同。例如“客户地址”而不是“地址”。我该如何处理此类数据?

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 后面是手机和密码。

最佳答案

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

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_df.to_csv('oupput.csv', index=False) 导出到 csv 文件。

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

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)

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

关于python - 重新排列 CSV 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23456734/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com