自动连接任意数量的列?

时间:2018-11-02 15:13:40

标签: python pandas dictionary

我有字典:

char *ptr = reinterpret_cast<char*>(GetLocalPlayer_EX());
printf("%p\n", ptr);

我想对每个文件在新列中进行上述列的串联。 这应该是自动化的。

#file1 mentions 2 columns while file2 mentions 3
dict2 = ({'file1' : ['colA', 'colB'],'file2' : ['colY','colS','colX'], etc..})

我如何每次都可以独立于每本词典中的列数进行这项工作?

只需连接所有提到的列。

更新

示例:

for k, v in dict1.items():
    df = pd.DataFrame.from_records(data=arcpy.da.SearchCursor(k, v)) #reads to a df
    df['new'] = df['first_col'].astype(str) + df['second_col'] etc.. #concatenation

2 个答案:

答案 0 :(得分:0)

您必须将pandas.concat()与axis = 1一起使用,

  

通过传入,沿x轴水平组合DataFrame对象   轴= 1。

import pandas as pd

    a = {'colA' : [123,124,112,165],'colB' :['alpha','beta','gamma','delta']}
    df_1 = pd.DataFrame(data = a)

    b = {'colY' : [123,124,112,165],'colS' :['alpha','beta','gamma','delta'], 'colX' :[323,326,378,399] }
    df_2 = pd.DataFrame(data = b)

df_new = pd.concat((df_1, df_2), axis=1)

print(df_new)

输出:

   colA   colB   colS  colX  colY
0   123  alpha  alpha   323   123
1   124   beta   beta   326   124
2   112  gamma  gamma   378   112
3   165  delta  delta   399   165

答案 1 :(得分:0)

pd.concat()axis=1一起使用:

import pandas as pd

a = {'colA' : [123,124,112,165],'colB' :['alpha','beta','gamma','delta']}
b = {'colY' : [123,124,112,165],'colS' :['alpha','beta','gamma','delta'], 'colX' :[323,326,378,399] }

df = pd.concat([pd.DataFrame(i) for i in [a,b]], axis=1)

收益:

   colA   colB  colY   colS  colX
0   123  alpha   123  alpha   323
1   124   beta   124   beta   326
2   112  gamma   112  gamma   378
3   165  delta   165  delta   399