将存储在Pandas Dataframe列中的Python列表转换为CSV列表

jjjwad0x  于 2023-03-28  发布在  Python
关注(0)|答案(2)|浏览(163)

我有一个pandas dataframe列,它存储了一个列表。
| 国家|城市|
| --------------|--------------|
| 俄勒冈州|[u'Eugen',u'Portland']|
| 纽约|[u'New Jersey',u'Buffalo']|
| 犹他州|[u '盐湖城']|
| 德克萨斯州|无|
我想将unicode值列表转换为简单的csv列表。
比如:
| 国家|城市|
| --------------|--------------|
| 俄勒冈州|尤金波特兰|
| 纽约|《新泽西》《布法罗》|
| 犹他州|湖城|
我还需要处理“城市”为“无”或列表中只有一个项目的情况。
有超过1700条记录,所以我想用一段代码来完成。我试过一些奇怪的方法,比如:

df['Cities'] = ','.join(str(row) for row in df['cities'])

但它似乎一直在长序列中将列表附加到自身,并一直返回Unicode列表。

xriantvc

xriantvc1#

我会这样做

import pandas as pd

data = [['Oregon', [u'Eugen', u'Portland']], ['New York', [u'New Jersey', u'Buffalo']], ['Utah', [u'Salt Lake City']],['Texas', None]]
df=pd.DataFrame(data, columns=['States', 'Cities'])

这给出了

States      Cities
0   Oregon      [Eugen, Portland]
1   New York    [New Jersey, Buffalo]
2   Utah        [Salt Lake City]
3   Texas       None

然后操作一个副本,首先去掉none,然后生成字符串

df1 = df.copy()
df1 = df1.dropna()
df1['Cities'] = df1['Cities'].apply("','".join)
df1['Cities'] = "'" + df1['Cities'] + "'"
df1

这给了

States      Cities
0   Oregon      'Eugen','Portland'
1   New York    'New Jersey','Buffalo'
2   Utah        'Salt Lake CIty'
dohp0rv5

dohp0rv52#

import pandas as pd

    # sample data
    df = pd.DataFrame({'col1': [1, 2, 3], 'col2': [[4, 5, 6], [7, 8, 9], [10, 11, 12]]})

    # function to convert list to CSV format
    def list_to_csv(lst):
        return ','.join(map(str, lst))

    # apply function to column containing lists
    df['col2_csv'] = df['col2'].apply(list_to_csv)

    # display the result
    print(df)

输出:
col1 col2 col2_csv
0 1 [4,5,6] 4,5,6
1 2 [7,8,9] 7,8,9
2 3 [10,11,12] 10,11,12

相关问题