【问题标题】:Processing each row in column处理列中的每一行
【发布时间】:2019-03-28 19:59:01
【问题描述】:
  1. 我正在尝试遍历“出生”列中的每一行
  2. 检查以“,”分隔的字符串的最后一部分是否以两个字符结尾 2.a.如果是,我会在后面加上“US”。

因此,“Los Angeles, Ca”将是“Los Angeles, Ca, US” 而“意大利西西里的比萨基诺”将保持不变

我想在一个函数中处理这个。

我已经尝试过了,但是在检查birthStr 的长度时,它给了我所有行的长度

for row in subset.itertuples():        
   birthStr= subset['birth'].str.rsplit(",", 1).str[-1]
   if len(birthStr) ==2:
      subset.birth = birthStr + "," + "US"

【问题讨论】:

  • 您不应该使用itertuples 遍历数据框,这应该是最后的手段
  • 向这个问题添加一些示例数据和预期输出。可能需要 5 到 10 个示例,其中包含需要 US 的示例和不需要的示例。
  • 除了@aws_apprentice 所说的,检查itertuples() 返回的内容,以及您在函数中迭代了多少输入变量
  • 请参阅this post,了解如何制作好的 pandas 示例

标签: python pandas bigdata


【解决方案1】:

我们可以使用pandas提供的str方法来解决这个问题。让我们使用我在下面定义的以下数据框。

print(df)
                       place
0            Los Angeles, Ca
1  Bisacquino, Sicily, Italy
2               New York, NY


condition = df.place.str.split(',').str[-1].str.strip().str.len() == 2

df.loc[condition, 'place'] = df.place + ', US'

print(df)

                       place
0        Los Angeles, Ca, US
1  Bisacquino, Sicily, Italy
2           New York, NY, US

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多