连接一个groupedBys熊猫数据框的字符串

时间:2019-11-25 10:38:51

标签: python pandas pandas-groupby

从ang SQL查询中,我得到了一个与此类似的数据框:

df = pd.DataFrame([
        ['ABC', 'Order'],
        ['ABC', 'Address'],
        ['ABC', 'Zip'],
        ['XYZ', 'Customer'],
        ['XYZ', 'Name']
    ],
    columns=("Table", "Column"))
  Table    Column
0   ABC     Order
1   ABC   Address
2   ABC       Zip
3   XYZ  Customer
4   XYZ      Name

我正在尝试将信息保存在一个单独的文件中,例如:

  

表ABC包含列:订单,地址,邮政编码

每个表一行(只能一次)。

我该如何实现?

我已经尝试过:

for table_name in df.TABLE_NAME:
  output = "Table" + Table_name + "are" + (df.iloc[:,2])

但是我没有得到任何想要的输出。

1 个答案:

答案 0 :(得分:1)

在按Table名称分组的同时进行一些字符串操作可以为您带来期望。

import pandas as pd

if __name__ == '__main__':
    df = pd.DataFrame([
        ['ABC', 'Order'],
        ['ABC', 'Address'],
        ['ABC', 'Zip'],
        ['XYZ', 'Customer'],
        ['XYZ', 'Name']
    ],
    columns=("Table", "Column"))

    pretty = pd.concat(
        (df['Table'],
        df.groupby("Table")['Column'].transform(lambda x: ", ".join(x))),
        axis=1
    ).drop_duplicates()

    for _, row in pretty.iterrows():
        print("Table '{}' has columns: {}".format(row['Table'], row['Column']))
Table 'ABC' has columns: Order, Address, Zip
Table 'XYZ' has columns: Customer, Name