【问题标题】:Place value in Dataframe based on Column name根据列名在 Dataframe 中放置值
【发布时间】:2019-11-28 16:46:06
【问题描述】:

我正在寻找一种解决方案,根据将条件与数据框的列名匹配来放置值。

例子:

A = (5000, 3500) # Column names where I want to place B
B = 'Insert here'  # String to place into Dataframe

Resulting in the empty Dataframe on the left turning into Dataframe: 

Index  3400  3500  4500 5000            Index  3400  3500  4500 5000
3400     x     x     x    x             3400     x     x     x    x
3500     x     x     x    x             3500     x     x     x    x
4500     x     x     x    x             4500     x     x     x    x
5000     x     x     x    x             5000     x     B     x    x

【问题讨论】:

标签: pandas dataframe tuples


【解决方案1】:

您可以使用转置和 stack() ,然后使用 loc[]unstack 进行分配:

A = (5000, 3500)
B='B'

m=df.T.stack()
m.loc[A]=B
final=m.unstack()

Index 3400 3500 4500 5000
3400     x    x    x    x
3500     x    x    x    x
4500     x    x    x    x
5000     x    B    x    x

【讨论】:

  • 这只会返回包含变量的行和列。在此示例中,行“5000”和列“3500”。取消堆叠时不显示其他行和列。
  • @Frits 尝试使用 df=pd.DataFrame({3400: {3400: 'x', 3500: 'x', 4500: 'x', 5000: 'x'}, 3500: {3400: 'x', 3500: 'x', 4500: 'x', 5000: 'x'}, 4500: {3400: 'x', 3500: 'x', 4500: 'x', 5000: 'x'}, 5000: {3400: 'x', 3500: 'x', 4500: 'x', 5000: 'x'}}) 并告诉我,我尝试使用相同的数据框。
  • 索引和列是数字还是字符串?看起来像数字@Frits
  • 当我调用操作m = df.T.stack()时出现问题。它创建了一个空的 Dataframe,而不是堆叠实际的 Dataframe,它的形式比我用作示例的 Dataframe 更复杂。我正在研究这个问题。感谢您的帮助!
猜你喜欢
  • 2022-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-27
  • 1970-01-01
  • 1970-01-01
  • 2021-07-12
相关资源
最近更新 更多