【问题标题】:Python. How can i split DataFrame into list with 2 components?Python。如何将 DataFrame 拆分为包含 2 个组件的列表?
【发布时间】:2021-07-31 10:15:40
【问题描述】:

我想像下面那样拆分 DataFrame。 DataFrame 包含字符串。我想将每个字符串分成 2 个列表

Input :

        AGE
0 '1 years 2 days ago'
1 '3 days 4 mins ago'
2 ' 5 mins 6 secs ago'


OUTPUT:
         AGE
0 [1, years], [2, days]
1 [3, days], [4, mins]
2 [5, mins], [6, secs]

【问题讨论】:

  • 嘿!如果你得到了你想要的,请考虑接受其中一个答案!

标签: python dataframe split


【解决方案1】:

使用extract:

>>> df['AGE'].str.extract(r'(\d+ \w+) (\d+ \w+)') \
             .applymap(str.split).apply(lambda x: [x[0], x[1]], axis=1) \
             .rename('AGE').to_frame()

                       AGE
0  [[1, years], [2, days]]
1   [[3, days], [4, mins]]
2   [[5, mins], [6, secs]]

【讨论】:

  • 效果很好。但是是否有可能将第 0 列和第 1 列统一为 1 列?
  • @marsss。我更新了我的答案。你得到的是一个真正的列表列表,这就是[ ] 包含列值的原因。
【解决方案2】:

这里有一个更容易阅读的解决方案:

# Creating the Dataframe objects
df = pd.DataFrame({'AGE':['1 years 2 days ago', '3 days 4 mins ago','5 mins 6 secs ago']})
final_df = pd.DataFrame()

# splitting into 4 separate columns
df = df['AGE'].str.split(' ', n=4, expand=True)

# Grouping into lists
final_df['first'] = df.iloc[:, [0,1]].values.tolist()
final_df['second'] = df.iloc[:, [2,3]].values.tolist()

print(final_df)

输出:

        first         second
0  [1, years]  [2, days]
1   [3, days]  [4, mins]
2   [5, mins]  [6, secs]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-28
    • 2014-12-15
    • 2021-10-04
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    相关资源
    最近更新 更多