Python熊猫智能追加

时间:2019-09-13 08:46:13

标签: python pandas

我有一个包含以下内容的csv文件:

Car     Model   Color    Price
Proton  X70              100K
Honda           white    100K

我有一个数据框:

Car       Color      Model
Perudua   White      Myvi

我希望将数据帧附加到csv文件中,但是下面的代码无法提供所需的输出,也不会根据列名进行附加。

if not os.path.isfile('C:/Users/sj/Desktop/car.csv'):
    CombineTable.to_csv('C:/Users/sj/Desktop/car.csv', header='column_names',index=False)
else:
    CombineTable.to_csv('C:/Users/sj/Desktop/car.csv', header=False, mode='a',index=False)

我想要的输出是:

Car     Model   Color    Price
Proton  X70              100K
Honda           white    100K
Perudua Myvi    White

任何人都可以帮忙吗?

6 个答案:

答案 0 :(得分:1)

df1 = pd.DataFrame({'Car':['proton','honda'],'Model':['X70',''],'Color':['','White'],'Price':['100k','100k']})
df2 = pd.DataFrame({'Car':['perudua'],'Model':['Myvi'],'Color':['White']})

pd.concat([df1,df2],sort=False).reset_index()

提供此输出

enter image description here

答案 1 :(得分:1)

如果您的csv确实看起来像给定的,那么您需要使用sep='\t'标签分隔符将其导入:

df = pd.read_csv('csv2.csv',sep='\t')

然后您的csv输出命令可以正常工作。

答案 2 :(得分:1)

阅读csv:

cars = pd.read_csv('C:/Users/sj/Desktop/car.csv')

创建新的DataFrame:

new_car = pd.DataFrame([['Perudua'], ['White'], ['Myvi']], index=['Car', 'Color', 'Model']).T

新df如下:

    Car     Color   Model
0   Perudua White   Myvi

结合两个数据框:

cars.append(new_car, sort=False, ignore_index=True).sort_index()

最终结果如下:

    Car     Model   Color   Price
0   Proton  X70     NaN     100K
1   Honda   NaN     white   100K
2   Perudua Myvi    White   NaN

注意:

  • 合并时在末尾添加ignore_index = True和.sort_index()是为了使索引顺序可以为0, 1, 2等...
  • 添加sort=False不会收到错误警告。

随时尝试删除每一项,以查看最终结果如何变化。

答案 3 :(得分:1)

我认为您必须先从csv加载表,然后将其与其他数据框连接。为此,您可以使用pandas.concat函数:

df_from_csv = pd.read_csv('path')
CombineTable = pd.concat((df_from_csv, second_df), axis = 0)
CombineTable.to_csv('path')

答案 4 :(得分:0)

尝试此代码:

df_csv = pd.DataFrame({'Car':['proton','honda'],'Model':['X70',''],'Color':['','White'],'Price':['100k','100k']})
df = pd.DataFrame({'Car':['perudua'],'Model':['Myvi'],'Color':['White']})

df_new = pd.concat([df_csv, df], sort=False).reset_index().drop(columns=['index'])
df_new.to_csv('yourfile.csv')

按照您的要求做

       Car Model  Color Price
0   proton   X70         100k
1    honda        White  100k
2  perudua  Myvi  White   NaN

答案 5 :(得分:0)

您可以尝试下面的代码来提供所需的输出:

import numpy as np
csvcar = pd.read_csv('C:\Users\xxxxxx\Desktop\car.csv')
dfcar = pd.DataFrame([['Perudua','White','Myvi']], columns =['Car', 'Color', 'Model'])
df = pd.concat((csvcar, dfcar), ignore_index=True)
df1 = df.replace(np.nan, '', regex=True)

以上代码的输出如下:

    Car     Color   Model   Price
0   proton          X70     100k
1   honda   White           100k
2   Perudua White   Myvi    

然后,您可以导出它或将其替换为csv文件:

df1.to_csv('C:\Users\xxxxxx\Desktop\car.csv')