【问题标题】:Converting a pandas series to a string array将熊猫系列转换为字符串数组
【发布时间】:2018-11-01 18:21:10
【问题描述】:

我有一个熊猫数据框:

ind  
0   ['C']
1   ['C']
2   ['C']
3   ['C']
4   ['E']
5   ['E']

我想转成字符串:CCCCEE

【问题讨论】:

标签: python pandas dataframe series


【解决方案1】:

使用itertools.chain

from itertools import chain

df = pd.DataFrame({'ind': [['C'], ['C'], ['C'], ['C'], ['E'], ['E']]})

res = ''.join(chain.from_iterable(df['ind']))

print(res)

CCCCEE

【讨论】:

  • 可以,但''.join(chain.from_iterable(df['ind'])) 不够吗?
  • @AntonvBR,list 转换是有意的,see here why。你说得对,访问values 是不必要的,更新了。
  • 哦.. 还是那个老东西。是的,这可能是对的,但我觉得在应用多层括号时它会失去可读性。
  • 好的,我对一个非常大的数据帧进行了一些计时,我将其解释为:str.join 将在应用join 之前将生成器转换为列表,因此建议使用@ 987654330@ 对() 表达式的列表理解。但是,当本例中的返回值是迭代器时,没有必要将其转换为列表,因为无论如何这将由 str.join 完成。因此,我认为您在这种特殊情况下是错误的,list() 只会创建额外的括号层。
  • @AntonvBR,这很有趣,我同意list 很贵。看来我需要再深入一点。谢谢:)。
【解决方案2】:

您可以使用str

df['ind'].str[0].sum()
Out[197]: 'CCCCEE'

【讨论】:

  • ind 不是实际的列名,只是默认的 python 数据帧索引。您能否建议我应该如何进行?
  • @KrishnaAnapindi 你的意思是:df.index.str[0].sum()?
  • 给出一个错误,说“索引”对象没有属性来求和
  • @KrishnaAnapindi 它不像您的示例数据中的索引
  • 是的,只需将 'ind' 替换为包含字符串的列的名称
【解决方案3】:

你可以这样做:

chain=""
for index, row in df.iterrows():
    chain=chain+row['column']
return chain

如果您在遍历数据帧时遇到问题,可以查看How to iterate over rows in a DataFrame in Pandas?

【讨论】:

    猜你喜欢
    • 2021-04-17
    • 2016-03-13
    • 1970-01-01
    • 2017-07-31
    • 2019-01-27
    • 2018-10-21
    • 2023-04-07
    • 2019-10-12
    • 2021-09-19
    相关资源
    最近更新 更多