【问题标题】:how to fill a Pandas dataframe column with a list containing string values如何用包含字符串值的列表填充 Pandas 数据框列
【发布时间】:2020-01-20 16:32:23
【问题描述】:

我有一个包含 142 行的数据框。 我创建了一个新列。我想用包含字符串的列表填充这个新列。

my_list = ['abc','def','hig']
df['names'] = df['names'].fill(my_list) #pseudo code

我想以相同的顺序用列表中的字符串值填充“名称”列中的所有 142 行。

The output should be as:   

     names
   1 abc
   2 def
   3 hig
   4 abc
   5 def

【问题讨论】:

  • 您想用这个列表填充所有 142 行吗?所以df['names']=[['abc','def','hig']]*len(df)?
  • 我想是的@anky_91
  • 你试过 df['names'] = list 吗?
  • 我的意思是列表中的字符串值。列表中的第一个值应该分配给第一行,第二个值应该分配给第二行等等。
  • 旁注,尽量避免为变量使用保留名称,不要使用list,而应使用my_list之类的名称。

标签: python python-3.x pandas numpy


【解决方案1】:

我认为您需要像下面这样带有np.resize 的东西,它将根据数据框调整列表的大小。

示例数据框:

df = pd.DataFrame(np.random.randint(0,100,size=(5,4)),columns=list('ABCD'))

    A   B   C   D
0  10  99   0  61
1  55   0  52  53
2  34  88  79  54
3  25  32   1  89
4  39  30  77   5

解决方案:

mylist=['abc','def','hig']
df['names'] = np.resize(mylist,len(df))
print(df)

    A   B   C   D names
0  10  99   0  61   abc
1  55   0  52  53   def
2  34  88  79  54   hig
3  25  32   1  89   abc
4  39  30  77   5   def

【讨论】:

    【解决方案2】:

    你几乎拥有它。试试这个,

    import pandas as pd
    list = ['abc','def','hig']
    df=pd.DataFrame(list)
    df.columns=['names'] #provides a name for the column
    
    df_repeated = pd.concat([df]*48, ignore_index=True)
    

    它为您提供 48*3=144 行。那么,

    df_repeated =df_repeated.reindex(df_repeated.index.drop(144)).reset_index(drop=True)
    

    【讨论】:

    • 啊。好的,让我考虑一下。
    猜你喜欢
    • 1970-01-01
    • 2022-01-10
    • 2017-04-11
    • 1970-01-01
    • 2016-02-28
    • 2015-02-02
    • 2018-01-21
    • 1970-01-01
    • 2017-10-10
    相关资源
    最近更新 更多